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

I need to get the current time for my android app. The time should be operator's time and not the local time set by the user.

TelephonyManager telephonyManager =((TelephonyManager)Context.getSystemService(Context.TELEPHONY_SERVICE));

String operatorName = telephonyManager.getNetworkOperatorName();

This is to get the operator's name programmatically. But how to get the operator's current time? If the user has changed the time manually, then the app will change it to operator's current time.

Unable to find a better one. If its already asked on stackoverflow, excuse and please provide the link.

EDIT:

I forgot to mention that it is an offline app where i am not getting the internet permission from the user.

Thanks.

(sorry for bad English)

解决方案

The simple answer is that it cannot be done. In order to accomplish what you want, your app would need to do two things:

send service message to the network operator; and

change local time on the device.

Both of these operations require system-level privileges. That is, your app needs to be signed with a system key (i.e. one issued by Google to device manufacturers) in order to access these functions.

What you can do is get the current time from an NTP server. There are plenty free-to-use NTP servers on the internet. A sample code to get such time is this:

String timeServer = "server 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);

Now your cal object contains the real time from the NTP server and not the time from the device. Still, you will not be able to set the time as the device's current time.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值