Version: 2022.2
言語: 日本語
アプリケーションの権限の宣言
Android 用のビルドと提出

ランタイム権限のリクエスト

このページでは、アプリケーションがデバイス上のデータにアクセスしたりデバイス機能 (ビルトインの カメラ やマイクなど) を使用するための権限をユーザーにリクエストする方法を説明します。

権限のリクエストに関する Google のガイドラインでは、ユーザーが権限のリクエストを一旦拒否した場合は、リクエストの理由を表示し、リクエストを再度提示することを推奨しています。

Android デバイスで権限をリクエストするタイミングと方法に関する詳細は、Android のデベロッパー向けドキュメントの アプリの権限に関するおすすめの設定 を参照してください。

要件

ランタイム権限 API を使用するには、Android バージョン 6 (API レベル 23) が必要です。アプリケーションのターゲット API の変更は、以下の手順で行ってください。

  1. Edit > Project Settings を選択します。
  2. Project Settings ウィンドウで Player タブを選択し、Android の Player 設定 を開いてください。
  3. Other SettingsIdentification セクションで、Target API Level を level 23 以上に設定してください。

アプリケーションは、制限付きデータや特定のデバイス機能の使用権限をリクエストするにあたって、事前にその Android App Manifest (アプリマニフェスト) で権限を宣言する必要があります。詳細は アプリケーションの権限の宣言 を参照してください。

実行時の権限のリクエスト

Android.Permission API は、アプリケーションが現在持っている権限の確認や、アプリケーションが必要としていてまだ持っていない権限のリクエストに使用できる機能を提供します。

実行時の権限をリクエストする大まかなプロセスは、以下の通りです。

  1. アプリケーションの権限が既にユーザーによって付与されているかどうかを確認します。付与されている場合は再度リクエストする必要はありません。
  2. ユーザーがまだ権限を付与していない場合は、データにアクセスしたり、アプリケーションに必要なデバイス機能を使用するための、権限のリクエストを送信します。
  3. ユーザーがアプリケーションへの権限付与を拒否した場合は、アプリケーションの、その特定の権限を必要とする機能を無効にしてください。その機能がないとアプリケーションが機能しない場合は、ユーザーに通知してください。
  4. それでもユーザーがアプリケーションへの権限付与を拒否する場合は、ユーザーがアプリケーション内から手動で権限リクエストを起動できる方法を提供することをお勧めします。

アプリケーションが権限を持っているかの確認

Permission.HasUserAuthorizedPermission を使用して、アプリケーションの必要とするデータや機能に関する権限が、既にユーザーによって付与されているかどうか確認できます。

この API の使い方を示すコードサンプルは Permission.HasUserAuthorizedPermission に掲載されています。

権限リクエストの送信

データや機能の使用権限をリクエストするには Permission.RequestUserPermission を使用します。このメソッドを呼び出すと、Android によってシステム権限ダイアログが開かれ、ユーザーはこれを使用して権限リクエストを承認あるいは拒否できます。

この API の使い方を示すコードサンプルは、Permission.RequestUserPermission に掲載されています。

[Permission.RequestUserPermissions (../ScriptReference/Android.Permission.RequestUserPermissions.html) を使用すると、ユーザーデバイス上の複数のリソースへのアクセス権限を一度にリクエストできます。このメソッドは文字列の配列を使用しており、各文字列がそれぞれデバイスの特定のリソース (カメラ、マイク、位置情報など) へのアクセス権限を表します。

これらのメソッドは、権限リクエストがユーザーによって承認または拒否された後に実行するコードの指定に使用できる、PermissionCallbacks オブジェクト を受け取ることができます。これを使用すると、権限リクエストがユーザーによって承認されると同時にデバイス機能 (例: マイクからの録音など) を使用開始できます。

ヒント: 権限をリクエストする際には、ユーザーに対して、アプリケーションがなぜその機能を必要とするのかを説明するメッセージを表示することが推奨されます。

ノート: ユーザーがシステム権限ダイアログで Do not ask me again オプションを有効にしている場合や、権限リクエストが 2 回以上拒否された場合は、RequestUserPermission() はシステムダイアログを開きません。この場合、ユーザーがアプリケーションの権限の設定を開いて手動で権限を有効にする必要があります。

権限リクエストを手動で起動する方法の提供

アプリケーションが必要とする権限をユーザーが許可しなかった場合は、手動で権限リクエストダイアログを表示する方法をユーザーに提供してください。これをどのように行うかはアプリケーションによって異なりますが、Permission.RequestUserPermission を呼び出すボタンを提供するのもひとつの方法です。

アプリケーションの権限の宣言
Android 用のビルドと提出