このページでは、アプリケーションがデバイス上のデータにアクセスしたりデバイス機能 (ビルトインの カメラ やマイクなど) を使用するための権限をユーザーにリクエストする方法を説明します。
権限のリクエストに関する Google のガイドラインでは、ユーザーが権限のリクエストを一旦拒否した場合は、リクエストの理由を表示し、リクエストを再度提示することを推奨しています。
Android デバイスで権限をリクエストするタイミングと方法に関する詳細は、Android のデベロッパー向けドキュメントの アプリの権限に関するおすすめの設定 を参照してください。
ランタイム権限 API を使用するには、Android バージョン 6 (API レベル 23) が必要です。アプリケーションのターゲット API の変更は、以下の手順で行ってください。
アプリケーションは、制限付きデータや特定のデバイス機能の使用権限をリクエストするにあたって、事前にその Android App Manifest (アプリマニフェスト) で権限を宣言する必要があります。詳細は アプリケーションの権限の宣言 を参照してください。
Android.Permission API は、アプリケーションが現在持っている権限の確認や、アプリケーションが必要としていてまだ持っていない権限のリクエストに使用できる機能を提供します。
実行時の権限をリクエストする大まかなプロセスは、以下の通りです。
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 を呼び出すボタンを提供するのもひとつの方法です。