安卓应用修改系统时间

96
作者 追风917
2016.09.26 18:38 字数 689

博客: 安卓之家
掘金: jp1017
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917


每日一景

前言


通常,我们来获取系统时间来做一些事情,那么,如何设置系统时间呢?

问题抛出来,解决方法也就应运而生了。

解决方法


命令行

首先我想到的是手机root,然后命令行

date -s 要设置的时间

关于如何调用命令行,请点击:安卓程序中调用 linux 命令

如果手机没 root 怎么破呢,继续往下看吧。

获取系统权限修改

没有 root 的话,可以获取系统权限来设置,怎么设置呢,这个文章已经给出:

如何使Android应用程序获取系统权限来修改系统时间

就是系统签名了。

这里说明一点,由于在manifest文件加入android:sharedUserId="android.uid.system"这个属性,导致 Android Studio 等工具,直接编译运行会出现此提示窗:


error

多次点击 ok 无效,因为设置了系统属性,所以,下次你运行别的项目,出现此情况时,可以检查下时候添加了该属性的,有的话,去掉,再编译运行就可以的。

获取了权限了,一行代码就可以设置时间:

SystemClock.setCurrentTimeMillis(millTime);

参数是1970后跑过的毫秒数。

那么问题来了,如何获取这个时间呢,下面有三种方法:

1.gps时间

可以通过 gps 定位,获取 gps 时间,此处原生安卓代码,百度,高德都可实现,具体请参考相应 api。

2.网络

找到一篇文章,是这么个姿势:

获取网络时间(国家标准时间)

很巧妙,有木有啊,读取网站时间,哈哈,有个问题,网站不稳定时,会出错的。

3.TrueTime

地址:https://github.com/instacart/truetime-android

这个是今天在 GitHub 上发现的库,可以设置 NTP 服务器,来获取时间,使用也很简单

//设置中科大ftp服务器
TrueTime.build().withNtpHost("time.ustc.edu.cn").initialize();
Date date = TrueTime.now();

然后 date.getTime() 获取毫秒数,设置时间就可以了。

最后,非常感谢您的阅读,有任何疑问,可以后面评论,谢谢!

神奇的安卓开发网站:http://androidcat.com/

安卓开源库收集整理:https://github.com/XXApple/AndroidLibs

分享是一种美德,更是一种生活方式!!

也许你会说我是一个梦想者,但我不是唯一的一个。

悦分享,越快乐^_^

欢迎交流,转载请注明出处,谢谢!

Android