DevicePolicyManager.SetPermissionGrantState 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
為特定應用程式設定執行時權限的授予狀態。
[Android.Runtime.Register("setPermissionGrantState", "(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;I)Z", "GetSetPermissionGrantState_Landroid_content_ComponentName_Ljava_lang_String_Ljava_lang_String_IHandler", ApiSince=23)]
[Android.Runtime.RequiresPermission("android.permission.MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS")]
public virtual bool SetPermissionGrantState(Android.Content.ComponentName? admin, string packageName, string permission, Android.App.Admin.PermissionGrantState grantState);
[<Android.Runtime.Register("setPermissionGrantState", "(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;I)Z", "GetSetPermissionGrantState_Landroid_content_ComponentName_Ljava_lang_String_Ljava_lang_String_IHandler", ApiSince=23)>]
[<Android.Runtime.RequiresPermission("android.permission.MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS")>]
abstract member SetPermissionGrantState : Android.Content.ComponentName * string * string * Android.App.Admin.PermissionGrantState -> bool
override this.SetPermissionGrantState : Android.Content.ComponentName * string * string * Android.App.Admin.PermissionGrantState -> bool
參數
- admin
- ComponentName
這個請求就是和這個 DeviceAdminReceiver 問題有關的。 如果呼叫者不是裝置管理員,則為 Null。
- packageName
- String
申請授予或撤銷許可。
- permission
- String
授權或撤銷的許可。
- grantState
- PermissionGrantState
允許授予狀態為 #PERMISSION_GRANT_STATE_DENIED, #PERMISSION_GRANT_STATE_DEFAULT, #PERMISSION_GRANT_STATE_GRANTED, ,
傳回
該許可是否成功核准或撤銷。
- 屬性
備註
為特定應用程式設定執行時權限的授予狀態。 狀態可以是 #PERMISSION_GRANT_STATE_DEFAULT default 使用者可以透過 UI 管理,權限 #PERMISSION_GRANT_STATE_DENIED denied被拒絕且使用者無法透過 UI 管理,以及 #PERMISSION_GRANT_STATE_GRANTED granted 權限被授予但使用者無法透過 UI 管理。 此方法僅能由設定檔擁有者、裝置擁有者或透過 授權#DELEGATION_PERMISSION_GRANT#setDelegatedScopes範圍的代理人呼叫。
請注意,使用者也無法透過介面管理受影響群組中的其他權限,且其授權狀態會維持為目前值。 因此,建議你設定受影響群組中所有權限的授權狀態。
將授權狀態設為 並 #PERMISSION_GRANT_STATE_DEFAULT default 不會撤銷該授權。 若有補助,則保留先前的補助金。
擁有
管理員帶有 targetSdkVersion ≥ android.os.Build.VERSION_CODES#Q ,可以授權或撤銷所有應用程式的權限。 類似使用者撤銷一個用
注意:在運行及以上的android.os.Build.VERSION_CODES#S裝置上,對以下與感測器相關的權限控制受限:<ul<>li>Manifest.permission.ACCESS_FINE_LOCATION</li><li>Manifest.permission.ACCESS_BACKGROUND_LOCATION</li<>li>Manifest.permission.ACCESS_COARSE_LOCATION</li><li Manifest.permission.CAMERA>/<li><li>Manifest.permission.RECORD_AUDIO</li><li li>Manifest.permission.RECORD_BACKGROUND_AUDIO</li<>li>Manifest.permission.ACTIVITY_RECOGNITION</li><li>Manifest.permission.BODY_SENSORS</li<>/ul> 在運行中的android.os.Build.VERSION_CODES#BAKLAVA裝置中,也android.health.connect.HealthPermissions包含在限制清單中。
設定檔擁有者不得授予這些權限(即以上述任一權限grantState#PERMISSION_GRANT_STATE_GRANTED呼叫此方法),但可以拒絕。
裝置擁有者預設情況下可以繼續授予這些權限。 然而,為了增加使用者控制權,管理員可選擇不控制這些權限的授權,並在配置參數中加入 #EXTRA_PROVISIONING_SENSORS_PERMISSION_GRANT_OPT_OUT 。 在這種情況下,裝置擁有者的控制權將僅限於拒絕這些權限。
當因上述情況無法授予感測器相關權限時,若裝置管理員是用 targetSdkVersion >= android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM,此方法將拋出 SecurityException。
注意:在運行及android.os.Build.VERSION_CODES#S以上的裝置上,受管理設定檔擁有者無法控制以下權限:<ul<>li>Manifest.permission.READ_SMS</li></ul>
受管理的設定檔擁有者不得授予這些權限(即以上述grantState#PERMISSION_GRANT_STATE_GRANTED任一權限呼叫此方法),但可以拒絕這些權限。
當管理員被限制授權時,若嘗試授予這些權限,將被默默忽略(不會有例外)。
以下權限的控制權僅限於受管理的設定檔擁有者: <ul><li>Manifest.permission.READ_SMS</li></ul>
受管理的設定檔擁有者不得授予這些權限(即以上述grantState#PERMISSION_GRANT_STATE_GRANTED任一權限呼叫此方法),但可以拒絕這些權限。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。