LoginSignup
2
1

More than 5 years have passed since last update.

他アプリにPermissionダイアログを表示させずに権限を付与する方法

Posted at

System App のみ

必要Persmittion

<uses-permission android:name="android.permission.GRANT_REVOKE_PERMISSIONS" />
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
<uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS" />
<uses-permission android:name="android.permission.REVOKE_RUNTIME_PERMISSIONS" />

あたりを付与する側に付けておく

実コード

Androidのソースの com.android.packageinstaller.permission.ui.handheld.AppPermissionsFragmentあたりを見るのが一番早い

com.android.packageinstaller.permission.model.AppPermissionGroupが実際に権限を付与したりはずしたりしてて、その中のgrantRuntimePermissionsメソッド参照
こいつの実体は

AppPermissionGroup.java
mPackageManager.updatePermissionFlags(permission.getName(),
    mPackageInfo.packageName,
    PackageManager.FLAG_PERMISSION_USER_SET
    | PackageManager.FLAG_PERMISSION_USER_FIXED,
    0, mUserHandle);

上記のメソッドを呼ぶところが本丸
PackageManagerのupdatePermissionFlagsというそのまんまな名前のメソッドにより設定できる

注意点は上記で出てきてるpermissionjava.securityのPermissionクラスではなく、com.android.packageinstaller.permission.modelのPermissionクラスなので、コードをコピペしてとりあえず動かそうってときに悲しくなったりする

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1