我想通过 SystemClock.setCurrentTimeMillis
设置系统时钟,但是遇到了以下错误:
"Unable to open alarm driver: Permission denied"
以下是来自 Android 开发者网站的 setCurrentMillis
API 的说明:
public static boolean setCurrentTimeMillis (long millis)
开始于:API 级别 1 设置当前挂钟时间,以毫秒为单位。要求调用进程具有适当的权限。
返回 如果时钟已成功设置为指定时间。
因此,应用程序需要获得设置时间的权限。
在 AndroidManisfest.xml 中,我插入了 android.permission.SET_TIME
但我有相同的消息错误。
我尝试了在互联网上找到的各种解决方案,似乎即使在引入了 android.permission.SET_TIME
的 FroYo (Android 2.2) 上,也无法在没有 root 的情况下设置系统时间,正常应用无法获得此权限,因为 /dev/alarm 文件具有 664 权限
。因此解决方案是更改 666
中的权限,但需要 root 设备并且侵入性太强,无法成为解决方案。
我想为我的公司创建一个应用程序来同步不同系统之间的数据,这对于同步时钟是必不可少的。
预先感谢您的意愿
eclipse
最佳答案
eclipse ,
我为此做了相当多的检查,并找到了 Google 的公开票证来解决问题。唯一的问题是标签自2009年11月8日起开放。基本上只有系统才能更改时间,即使有权限。根据下面链接的评论,一位开发人员做了一些研究并注意到当创建权限 SET_TIME 时,它在操作系统中没有被赋予适当的保护级别(signatureorSystem v.s dangerous)。结果它没有做它应该做的事情。
http://code.google.com/p/android/issues/detail?id=4581
这里解释了权限可以具有的各种保护级别。目前,根据开发人员的说法,上面的 SET_TIME 有“signatureorSystem”,而它应该有“dangerous”。
http://developer.android.com/guide/topics/manifest/permission-element.html#plevel
简而言之,目前没有办法在不对手机进行 root 的情况下以编程方式更改时间。
最后要注意的是,如果您想使用自定义 rom,Cyanogenmod 也有一张公开票,可以为他们的 rom 添加功能。
http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=CyanogenMod+SET_TIME
希望这对一些人有所帮助, 乔治
关于android - 可以从我的 Android 应用程序设置系统日期时间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6584772/