6

我在学习 android 开发时尝试了一些 android 的东西,现在我在这里有一个场景。

  • 我想通过我的应用程序更改安卓手机的系统日期(首先我想知道这是否可行?

布局如下

布局

现在我想要的是当用户单击按钮时,日期应该增加 20 天,我该怎么做。

我无法开始...请帮助

4

4 回答 4

8

正如我已经说过的那样,这是不可能的。您需要该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),你可以改变这个文件的权限,并在其中写入一个新的值。已填写错误报告,要求谷歌允许应用程序以编程方式修改移动日期,但已被拒绝。这里 参考

于 2013-06-12T15:35:02.853 回答
4

在 Android 上,应用程序对时间和日期具有写入权限的唯一方法是获得 SET_TIME 权限,这仅适用于“在 Android 系统映像中或使用与声明的应用程序相同的证书签名的应用程序”许可。” (参见signatureOrSystem 保护级别)。

您的应用程序达到此保护级别的唯一方法是在有根设备上运行,或者构建并签署您自己的 android rom。

如果是这种情况,您可以轻松使用AlarmManager或简单地使用Calendar实例。

祝你好运!

于 2013-06-11T08:22:30.043 回答
0

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.

于 2013-06-14T00:04:36.367 回答
0

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)

尽管这与以编程方式更改时间并不完全相同,但如果出于某种原因确实需要更改系统时间,您仍然可以让用户为您更改系统时间。如果你想走这条路,这个线程将解释如何去实现它。

希望这是有用的信息!

于 2013-06-14T18:49:05.773 回答