Android - adbコマンドでパーミッションGrantまたはRevoke

adbコマンドでAppのパーミッションを付与したり、制限することができます。

パーミッション付与(grant):adb shell pm grant --user 0 PACKAGE PERMISSION

次のコマンドは、 User 0にインストールされてYoutubeアプリにACCESS_FINE_LOCATION権限を付与します。 --userオプションを省略すると、User 0に設定されます。

$ adb shell pm grant --user 0 com.google.android.youtube android.permission.ACCESS_FINE_LOCATION

このコマンドで付与が可能なパーミッションはRuntime Permissionです。 Install permissionは、このコマンドでgrantコマンドまたはrevokeがありません。

次のようにパッケージ情報の runtime permissions:でパーミッションの状態を確認することができます。

granted=trueはアプリに許可が付与されたことを意味します。

Packages:
  Package [com.google.android.youtube] (3d1fcc2):
    userId=10121
    pkg=Package{b77ead3 com.google.android.youtube}
    codePath=/product/app/YouTube
    ....
    install permissions:
      com.google.android.c2dm.permission.RECEIVE: granted=true
      android.permission.USE_CREDENTIALS: granted=true
    User 0: ceDataInode=122910 installed=true hidden=false suspended=false distractionFlags=0 stopped=false notLaunched=false enabled=0 instant=false virtual=false
      gids=[3003]
      runtime permissions:
        android.permission.ACCESS_FINE_LOCATION: granted=true, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
        android.permission.ACCESS_COARSE_LOCATION: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]

パーミッション制限(revoke):adb shell pm revoke --user 0 PACKAGE PERMISSION

次のコマンドは、 User 0にインストールされてYoutubeアプリにACCESS_FINE_LOCATION権限を回収します。 --userオプションを省略すると、User 0に設定されます。

$ adb shell pm grant --user 0 com.google.android.youtube android.permission.ACCESS_FINE_LOCATION

次のようにパッケージ情報の runtime permissions:でパーミッションの状態を確認することができます。

granted=falseはアプリに許可が付与されたことを意味します。

Packages:
  Package [com.google.android.youtube] (3d1fcc2):
    userId=10121
    pkg=Package{b77ead3 com.google.android.youtube}
    codePath=/product/app/YouTube
    ....
    install permissions:
      com.google.android.c2dm.permission.RECEIVE: granted=true
      android.permission.USE_CREDENTIALS: granted=true
    User 0: ceDataInode=122910 installed=true hidden=false suspended=false distractionFlags=0 stopped=false notLaunched=false enabled=0 instant=false virtual=false
      gids=[3003]
      runtime permissions:
        android.permission.ACCESS_FINE_LOCATION: granted=true, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
        android.permission.ACCESS_COARSE_LOCATION: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]

Runtime permission初期化:adb shell pm reset-permissions

次のコマンドは、すべてのアプリのruntime permissionを初期設定値に戻します。

Systemによって、基本的に許可されたパーミッションはgrantedに変更され、それ以外のパーミッションはrevoked状態に初期化されます。

$ adb shell pm reset-permissions
codechachaCopyright ©2019 codechacha