可以从我的Android应用程序设置系统日期时间吗?

Ecl*_*ses 13 android file-permissions permission-denied android-manifest

我想设置系统时钟SystemClock.setCurrentTimeMillis,但遇到以下错误:

"Unable to open alarm driver: Permission denied"
Run Code Online (Sandbox Code Playgroud)

以下是setCurrentMillisAndroid开发者网站的API 说明:

public static boolean setCurrentTimeMillis (long millis) 
Run Code Online (Sandbox Code Playgroud)

从以下版本开始:API Level 1设置当前的挂起时间,以毫秒为单位.要求调用进程具有适当的权限.

如果时钟成功设置为指定时间,则返回.

因此,应用程序需要获取设置时间的权限.在我插入的AndroidManisfest.xml中,android.permission.SET_TIME但是我有相同的消息错误.

我已尝试在互联网上找到各种解决方案,似乎即使在android.permission.SET_TIME引入的FroYo(Android 2.2)上也无法设置没有root的系统时间,正常的应用程序因为/ dev/alarm文件而无法获得此权限664 permission.因此,解决方案是更改权限666但需要root设备,并且太具有侵入性,无法成为解决方案.

我想为我的公司创建一个App来同步不同系统之间的数据,这对于同步时钟至关重要.

提前感谢您的意愿

日食

Geo*_*ker 11

日食,

我在这方面做了相当多的检查,并找到了一张与谷歌公开的票来解决问题.唯一的问题是标签自2009年11月8日以来一直开放.基本上只有系统可以改变时间,即使使用权限.根据下面链接的评论,开发人员进行了一些研究,并指出当创建权限SET_TIME时,它没有在操作系统中给出适当的保护级别(signatureorSystem vs dangerous).结果它没有做它应该做的事情.

http://code.google.com/p/android/issues/detail?id=4581

以下是权限可以具有的各种保护级别的说明.目前根据开发人员的提示,SET_TIME上面有"signatureorSystem"时应该有"危险".

http://developer.android.com/guide/topics/manifest/permission-element.html#plevel

简而言之,目前无法以编程方式更改时间而无需根植电话.

最后要注意的是,如果你想使用Custom roms,还有一张Cyanogenmod的开放票,也可以为他们的rom添加能力.

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=CyanogenMod+SET_TIME

希望这对一些人有帮助,乔治


ada*_*des 3

根据这篇文章,SET_TIME 是正确的权限,但它仅适用于已 root 的手机。

  • 纠正一下,第三方应用程序不允许这样做。 (4认同)