Version: 2023.2
言語: 日本語
アプリケーションの権限の宣言
Handle Android crashes

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

This page explains how to request the user’s permission for your application to access data on the device or use a device feature such as a built-in camera or microphone.

権限のリクエストに関する 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. If the user hasn’t granted the permission, check if you need to display the rationale for requesting the permission. If the rationale isn’t necessary, directly send a request for permission to access the data or use the device feature that the application requires.
  3. ユーザーがアプリケーションへの権限付与を拒否した場合は、アプリケーションの、その特定の権限を必要とする機能を無効にしてください。その機能がないとアプリケーションが機能しない場合は、ユーザーに通知してください。
  4. それでもユーザーがアプリケーションへの権限付与を拒否する場合は、ユーザーがアプリケーション内から手動で権限リクエストを起動できる方法を提供することをお勧めします。

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

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

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

Check whether to display the rationale for permission request

Use Permission.ShouldShowRequestPermissionRationale to check whether you need to display the rationale for a specific permission request.

If the rationale is necessary, display a message with reason why your application requires access to specific device features. After you display the message, send a request for permission.

If the rationale isn’t necessary, directly proceed to send a request for permission.

For a code example that shows how to use this API, refer to Permission.ShouldShowRequestPermissionRationale.

権限リクエストの送信

Use Permission.RequestUserPermission to request permission to use the data or feature. When you call this method, Android opens the system permission dialog that the user can use to grant or deny the permission.

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

Use Permission.RequestUserPermissions to request permissions to access multiple resources on the user’s device at once. This method uses an array of strings with each string representing a specific permission to access a particular resource such as the device’s camera , microphone, or location.

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

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

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

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

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

アプリケーションの権限の宣言
Handle Android crashes