語言

DevicePolicyManager.SetPermissionGrantState 方法

定義

為特定應用程式設定執行時權限的授予狀態。

[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 ,可以授權或撤銷所有應用程式的權限。 類似使用者撤銷一個用 < 建置的應用程式的權限, 該 app-op 設定 為 ,但權限仍維持生效。

注意:在運行及以上的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任一權限呼叫此方法),但可以拒絕這些權限。

Java 文件 android.app.admin.DevicePolicyManager.setPermissionGrantState(android.content.ComponentName, java.lang.String, java.lang.String, int)。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於