前言
通常,我们来获取系统时间来做一些事情,那么,如何设置系统时间呢?
问题抛出来,解决方法也就应运而生了。
解决方法
命令行
首先我想到的是手机root,然后命令行
date -s 要设置的时间
复制代码
如果手机没 root 怎么破呢,继续往下看吧。
获取系统权限修改
没有 root 的话,可以获取系统权限来设置,怎么设置呢,这个文章已经给出:
就是系统签名了。
这里说明一点,由于在manifest文件加入android:sharedUserId="android.uid.system"这个属性,导致 Android Studio 等工具,直接编译运行会出现此提示窗:
多次点击 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() 获取毫秒数,设置时间就可以了。
最后,非常感谢您的阅读,有任何疑问,可以后面评论,谢谢!
分享是一种美德,更是一种生活方式!!
也许你会说我是一个梦想者,但我不是唯一的一个。
悦分享,越快乐^_^
欢迎交流,转载请注明出处,谢谢!