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

标签 android android-manifest file-permissions permission-denied

我想通过 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/

相关文章:

android - 在 TextView 上单击电话

java - 如何在 android 上运行 USSD 命令?

android - 在 Android Studio(华为 P20)中读取 "/sys/class/power_supply/Battery/current_now"的访问权限

android - Google Play 为 Android 应用程序显示错误的 minSdkVersion

android - 我想使用更改后的 targetSdkVersion 更新 Playstore 上的应用程序

windows - 如何使文件对程序具有读写能力,但对 Windows 中的非管理员用户只读/无访问权限?

asp.net - 文件上传权限被拒绝Godaddy共享主机

android - react native (Android): Run inside fragment?

java - 公共(public)静态变量和Android Activity 生命周期管理

android - 在 Android Google Maps API v2 中实现覆盖的建议方法是什么?