25bd441208815d209131678e9a6e9f51.png

前言

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

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

解决方法

命令行

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

date -s 要设置的时间

复制代码

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

获取系统权限修改

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

就是系统签名了。

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

327634d01cc2c67e8f1520500abe9f01.png

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

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

SystemClock.setCurrentTimeMillis(millTime);

复制代码

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

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

1.gps时间

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

2.网络

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

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

3.TrueTime

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

//设置中科大ftp服务器

TrueTime.build().withNtpHost("time.ustc.edu.cn").initialize();

Date date = TrueTime.now();

复制代码

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

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

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

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

悦分享,越快乐^_^

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐