如何解决Android:使用设备策略管理器授予SET_TIME权限作为设备所有者
我正在开发COSU / KIOSK应用程序,需要手动更新设备上的时间。
我正在使用AlertManager.setTime(Calendar)
来执行此操作,但是我无法授予我的应用程序所需的SET_TIME
权限。
该应用程序是设备所有者,这使我可以使用许多其他系统权限,例如
android:name="android.permission.REBOOT"
android:name="android.permission.SHUTDOWN"
android:name="android.permission.WRITE_SETTINGS"
android:name="android.permission.INSTALL_PACKAGES"
android:name="android.permission.DELETE_PACKAGES"
所有这些权限都被授予了我的应用程序,只需将它们列出在manifest.xml
但是SET_TIME
无效。
我也尝试使用设备策略管理器
mDevicePolicyManager.setPermissionGrantState(mAdminComponentName,getPreferredPackageName(),Manifest.permission.SET_TIME,DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
此函数返回了false
,表示它无法授予权限。
如何在不提示用户向我的应用程序授予此权限的情况下解决此问题。
解决方法
如果您定位的设备是api 28+(Android 9及更高版本),则可以使用setTime(ComponentName admin,long millis)函数对其进行设置。
对于较低的android版本,我必须依靠设备制造商api来设置设备时间。
Manifest.permission.SET_TIME
是受保护的/系统权限,可惜deviceOwner无法使用setPermissionGrantState()
功能授予任何受保护的权限。
其文档中有一个非常重要的词:
设置特定应用程序的!runtime!权限的授予状态。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。