gpt4 book ai didi

android - 以编程方式获取网络运营商的时间(android)

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:10:10 25 4
gpt4 key购买 nike

我需要为我的 Android 应用获取当前时间。时间应该是运营商的时间,而不是用户设置的本地时间。

TelephonyManager telephonyManager =((TelephonyManager)Context.getSystemService(Context.TELEPHONY_SERVICE));
String operatorName = telephonyManager.getNetworkOperatorName();

这是以编程方式获取运算符(operator)的名称。但是如何获取运营商的当前时间呢?如果用户手动更改了时间,则该应用会将其更改为运营商的当前时间。

我做了一个google search也是:

找不到更好的。如果它已经在 stackoverflow 上被问到,请原谅并提供链接。

编辑:

我忘了说这是一个离线应用程序,我没有从用户那里获得互联网许可。

谢谢。

最佳答案

简单的回答是,这是不可能的。为了完成您想要的,您的应用需要做两件事:

  1. 向网络运营商发送服务消息;和
  2. 更改设备上的本地时间。

这两个操作都需要系统级权限。也就是说,您的应用需要使用系统 key (即由 Google 颁发给设备制造商的 key )进行签名才能访问这些功能。

可以做的是从 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);

现在您的 cal 对象包含来自 NTP 服务器的实时时间,而不是来自设备的时间。不过,您将无法将时间设置为设备的当前时间。

关于android - 以编程方式获取网络运营商的时间(android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18312916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com