我需要获取我的Android应用程序的当前时间.时间应该是操作员的时间,而不是用户设置的当地时间.
TelephonyManager telephonyManager =((TelephonyManager)Context.getSystemService(Context.TELEPHONY_SERVICE));
String operatorName = telephonyManager.getNetworkOperatorName();
Run Code Online (Sandbox Code Playgroud)
这是以编程方式获取操作员的名称.但是如何获得运营商的当前时间?如果用户手动更改了时间,则应用程序会将其更改为操作员的当前时间.
我也做了谷歌搜索:
无法找到更好的一个.如果已经在stackoverflow上询问,请原谅并提供链接.
编辑:
我忘了提到它是一个离线应用程序,我没有得到用户的互联网许可.
谢谢.
简单的答案是它无法完成.为了实现您的目标,您的应用需要做两件事:
这两个操作都需要系统级权限.也就是说,您的应用需要使用系统密钥(即Google向设备制造商发布的密钥)进行签名才能访问这些功能.
您可以做的是从NTP服务器获取当前时间.互联网上有很多免费的NTP服务器.获得这样的时间的示例代码是这样的:
String timeServer = "0.pool.ntp.org";
NTPUDPClient timeClient = new NTPUDPClient();
InetAddress inetAddress = InetAddress.getByName(timeServer);
TimeInfo timeInfo = timeClient.getTime(inetAddress);
long returnTime = timeInfo.getReturnTime();
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(returnTime);
Run Code Online (Sandbox Code Playgroud)
现在,您的cal对象包含来自NTP服务器的实时时间,而不是来自设备的时间.但是,您将无法将时间设置为设备的当前时间.