我在学习 android 开发时尝试了一些 android 的东西,现在我在这里有一个场景。
- 我想通过我的应用程序更改安卓手机的系统日期(首先我想知道这是否可行?)
布局如下
现在我想要的是当用户单击按钮时,日期应该增加 20 天,我该怎么做。
我无法开始...请帮助
正如我已经说过的那样,这是不可能的。您需要该SET_TIME
权限,并且该权限仅由系统授予 Android 系统映像中的应用程序。如果您能够获得该权限,则可以使用 AlarmManager 轻松更改。SystemClock.setCurrentTimeMillis
写入 /dev/allarm 文件
adb shell ls -l /dev/alarm
crw-rw-r-- system radio 10, 46 2013-06-12 10:46 alarm
c
停留Character special file (stored in /dev).
system 和 radio 有读写权限(rw-, tree bits, int value 6),其他只有读权限(r, int value 4)。所以文件权限是664
. 如果你能得到root用户(运行su
),你可以改变这个文件的权限,并在其中写入一个新的值。已填写错误报告,要求谷歌允许应用程序以编程方式修改移动日期,但已被拒绝。这里 参考
在 Android 上,应用程序对时间和日期具有写入权限的唯一方法是获得 SET_TIME 权限,这仅适用于“在 Android 系统映像中或使用与声明的应用程序相同的证书签名的应用程序”许可。” (参见signatureOrSystem 保护级别)。
您的应用程序达到此保护级别的唯一方法是在有根设备上运行,或者构建并签署您自己的 android rom。
如果是这种情况,您可以轻松使用AlarmManager或简单地使用Calendar实例。
祝你好运!
Normal user applications does not have permission to change the device time. Read the answer by cashbash in the following post for the alternate option.
Unfortunately, blackbelt is right; android lets us do a lot of cool things, but changing system time programmatically is not one of them.
Since I see that you are looking for more credible/official sources, I suggest you check out this open ticket with Google, which suggests this is an open problem--it ought to work, but doesn't, and it doesn't seem Google is going to fix it anytime soon. The gist of it is that the SET_TIME protection level is set higher than it ought to be. (for more information on permissions, see here)
尽管这与以编程方式更改时间并不完全相同,但如果出于某种原因确实需要更改系统时间,您仍然可以让用户为您更改系统时间。如果你想走这条路,这个线程将解释如何去实现它。
希望这是有用的信息!