[英]Android: Granting SET_TIME permission as a Device Owner using Device Policy Manager
我正在開發 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!的授予狀態特定應用程序的許可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.