Install-time Permissionの取得

投稿日:  更新日:

Install-time(Normal)Permissionの取得方法についてまとめます。

Permissionの詳細は「Permissionとその一覧」を参照してください。

スポンサーリンク

Permissionの取得

AndroidManifest.xmlへ必要なPermissionを列記するだけで取得できます。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.myapp">

    <!-- 以下はNormal Permission -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <!-- 以下はDangerous Permission -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
	
    <application ...>
		...
    </application>

</manifest>

Install-time Permissionの案内がインストール時に表示されます。

ユーザはそれを確認して、アプリをインストールする・しないを判断します。

インストールされたアプリは、Permissionが取得された状態になっています。

何もせずに、Permissionへ紐づいた機能が実行できます。

スポンサーリンク

Permission情報の所在

アプリが取得したPermission情報(Dangerous以外)は次の場所に格納されています。

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<packages>
    ...
    <permissions> ...</permissions>
	...
    <package name="パッケージ名" ...>
        ...
        <perms>
            <item name="android.permission.FOREGROUND_SERVICE" granted="true" flags="0" />
            <item name="android.permission.INTERNET" granted="true" flags="0" />
        </perms>
        ...
    </package>
</packages>
スポンサーリンク

Permission情報の出力

アプリが取得したPermission情報はターミナルから adb shell dumpsys コマンドを使って出力できます。

> adb shell dumpsys package パッケージ名
...
Packages:
  Package [パッケージ名] (xxxxxxx):
    ...
    requested permissions:
      android.permission.ACCESS_COARSE_LOCATION
      android.permission.ACCESS_FINE_LOCATION
      android.permission.INTERNET
      android.permission.FOREGROUND_SERVICE
    install permissions:
      android.permission.FOREGROUND_SERVICE: granted=true
      android.permission.INTERNET: granted=true
    User 0: ...
      gids=[3002, 3003]
      runtime permissions:
        android.permission.ACCESS_FINE_LOCATION: granted=true, flags=[...]
        android.permission.ACCESS_COARSE_LOCATION: granted=true, flags=[...]
...
スポンサーリンク

関連記事:

Androidは携帯端末のOSで、スマートフォンに適しています。 スマート(Smart)とは「賢い・洗練された」といった意味を持つ形容詞です。 Androidはこの「スマート」をユーザ自身の手で育てることが出来ます。 どのように育てるのか! それは世界中の開発者からリリースされているアプリをインストールして育てます。 より高機能なアプリ、より使い勝手の良いアプリを探してインストールすれば、あなたのスマートフォンはもっと「スマート」になるでしょう! しかし、アプリは良心的なものばかりではありません。中には悪意を持ったアプリも存在します。 悪意を持ったアプリから、ユーザを守る仕組みの1つがPermissionです。 ここまではユーザ目線でした。 逆にアプリの開発者目線で言えば、Permissionはアプリの安全性をユーザにアピールする手段でもありあます。 今回は、このPermissionについてまとめます。 ...
Runtime(Dangerous)Permissionの取得方法についてまとめます。 現在、Runtime Permissoinの取得方法は2つあります。 ここで紹介するのはRuntime Permission(API≧23)が登場した当初から存在している方法です。 この方法は、リクエスト(Permissionの申請)の結果を共用のコールバックAppCompatActivity#onRequestPermissionsResult( )で受け取ります。複数のリクエスト行うと、複数の結果を一つのコールバックで受けることになり、コールバック内でRequestCodeによる分岐が必要になります。 つまり、「開発者がリクエストを管理」しなければなりません。 Permissionの詳細は「Permissionとその一覧」を参照してください。 ...
Runtime(Dangerous)Permissionの取得方法についてまとめます。 現在、Runtime Permissoinの取得方法は2つあります。 ここで紹介するのは、ActivityResultContracts(※)を使う方法です。 この方法は、リクエスト(Permissionの申請)と結果を受け取る専用のコールバックが1対1に対応しています。ですので、複数のリクエストを行っても、RequestCodeによる分岐処理は必要ありません。システムが結果を各コールバックへ割り振ってくれます。 つまり、「システムがリクエストを管理」してくれます。 ドキュメントで推奨されている方法です。 Permissionの詳細は「Permissionとその一覧」を参照してください。 ※ライブラリandroidx.activity:activity≧1.20が必要 ...
パーミッションシステムの仕様変更がAPI≧30で行われています。  (1)1回だけアクセス許可  (2)“今後表示しない”の非表示  (3)アプリの休止 ここでは、「(1)1回だけアクセス許可」について説明します。 ...
パーミッションシステムの仕様変更がAPI≧30で行われています。  (1)1回だけアクセス許可  (2)“今後表示しない”の非表示  (3)アプリの休止 ここでは、「(2)“今後表示しない”の非表示」について説明します。 ...
パーミッションシステムの仕様変更がAPI≧30で行われています。  (1)1回だけアクセス許可  (2)“今後表示しない”の非表示  (3)アプリの休止 ここでは、「(3)アプリの休止」について説明します。 ...
「アプリの休止(App hibernation)」は発動までの期間が長いので、端末上で実際にその動作を確認しようとすると、待機時間が長くなってしまい、効率が悪いです。 ですので、テストでは「アプリの休止」を手動で発動させます。 今回は、この手動で発動させる方法を説明します。 ...
数ヶ月にわたってアプリが操作されなかった時に、アプリは休止状態(アプリの休止)になり、自動的にRuntime Permissionがリセット(削除)されます。 この機能はデフォルトで有効(On)です。 しかし、このPermissionのリセットを、良しとしないアプリが存在するかも知れません。 そのようなアプリのために、管理ページからユーザによって機能を無効(Off)にできます。 また、プログラム中から管理ページへユーザを誘導できます。 この「管理ページへユーザを誘導する方法」を紹介します。デベロッパーブログにも紹介されています。 ...
スポンサーリンク