このページでは、アプリケーションがデバイス上のデータにアクセスしたりデバイス機能 (ビルトインの カメラ やマイクなど) を使用するための権限をユーザーにリクエストする方法を説明します。
権限のリクエストに関する 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 を呼び出すボタンを提供するのもひとつの方法です。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.