PermissionsAndroid
PermissionsAndroid
は、Android Mの新しいパーミッションモデルへのアクセスを提供します。いわゆる「通常」のパーミッションは、AndroidManifest.xml
に記載されていれば、アプリケーションのインストール時にデフォルトで許可されます。しかし、「危険な」パーミッションにはダイアログプロンプトが必要です。これらのパーミッションには、このモジュールを使用する必要があります。
SDKバージョン23より前のデバイスでは、パーミッションがマニフェストに記載されていれば自動的に許可されるため、check
は常にtrue
を返し、request
は常にPermissionsAndroid.RESULTS.GRANTED
に解決されるはずです。
ユーザーが以前にあなたが要求するパーミッションをオフにしていた場合、OSはアプリにそのパーミッションが必要な理由を表示するようにアドバイスします。オプションのrationale
引数は、必要な場合にのみダイアログプロンプトを表示します。それ以外の場合は、通常のパーミッションプロンプトが表示されます。
使用例
ユーザーにプロンプトを表示する必要があるパーミッション
PermissionsAndroid.PERMISSIONS
の下で定数として利用可能です
READ_CALENDAR
: 'android.permission.READ_CALENDAR'WRITE_CALENDAR
: 'android.permission.WRITE_CALENDAR'CAMERA
: 'android.permission.CAMERA'READ_CONTACTS
: 'android.permission.READ_CONTACTS'WRITE_CONTACTS
: 'android.permission.WRITE_CONTACTS'GET_ACCOUNTS
: 'android.permission.GET_ACCOUNTS'ACCESS_FINE_LOCATION
: 'android.permission.ACCESS_FINE_LOCATION'ACCESS_COARSE_LOCATION
: 'android.permission.ACCESS_COARSE_LOCATION'ACCESS_BACKGROUND_LOCATION
: 'android.permission.ACCESS_BACKGROUND_LOCATION'RECORD_AUDIO
: 'android.permission.RECORD_AUDIO'READ_PHONE_STATE
: 'android.permission.READ_PHONE_STATE'CALL_PHONE
: 'android.permission.CALL_PHONE'READ_CALL_LOG
: 'android.permission.READ_CALL_LOG'WRITE_CALL_LOG
: 'android.permission.WRITE_CALL_LOG'ADD_VOICEMAIL
: 'com.android.voicemail.permission.ADD_VOICEMAIL'USE_SIP
: 'android.permission.USE_SIP'PROCESS_OUTGOING_CALLS
: 'android.permission.PROCESS_OUTGOING_CALLS'BODY_SENSORS
: 'android.permission.BODY_SENSORS'SEND_SMS
: 'android.permission.SEND_SMS'RECEIVE_SMS
: 'android.permission.RECEIVE_SMS'READ_SMS
: 'android.permission.READ_SMS'RECEIVE_WAP_PUSH
: 'android.permission.RECEIVE_WAP_PUSH'RECEIVE_MMS
: 'android.permission.RECEIVE_MMS'READ_EXTERNAL_STORAGE
: 'android.permission.READ_EXTERNAL_STORAGE'WRITE_EXTERNAL_STORAGE
: 'android.permission.WRITE_EXTERNAL_STORAGE'BLUETOOTH_CONNECT
: 'android.permission.BLUETOOTH_CONNECT'BLUETOOTH_SCAN
: 'android.permission.BLUETOOTH_SCAN'BLUETOOTH_ADVERTISE
: 'android.permission.BLUETOOTH_ADVERTISE'ACCESS_MEDIA_LOCATION
: 'android.permission.ACCESS_MEDIA_LOCATION'ACCEPT_HANDOVER
: 'android.permission.ACCEPT_HANDOVER'ACTIVITY_RECOGNITION
: 'android.permission.ACTIVITY_RECOGNITION'ANSWER_PHONE_CALLS
: 'android.permission.ANSWER_PHONE_CALLS'READ_PHONE_NUMBERS
: 'android.permission.READ_PHONE_NUMBERS'UWB_RANGING
: 'android.permission.UWB_RANGING'BODY_SENSORS_BACKGROUND
: 'android.permission.BODY_SENSORS_BACKGROUND'READ_MEDIA_IMAGES
: 'android.permission.READ_MEDIA_IMAGES'READ_MEDIA_VIDEO
: 'android.permission.READ_MEDIA_VIDEO'READ_MEDIA_AUDIO
: 'android.permission.READ_MEDIA_AUDIO'POST_NOTIFICATIONS
: 'android.permission.POST_NOTIFICATIONS'NEARBY_WIFI_DEVICES
: 'android.permission.NEARBY_WIFI_DEVICES'READ_VOICEMAIL
: 'com.android.voicemail.permission.READ_VOICEMAIL',WRITE_VOICEMAIL
: 'com.android.voicemail.permission.WRITE_VOICEMAIL',
パーミッションを要求した結果の文字列
PermissionsAndroid.RESULTS
の下で定数として利用可能です
GRANTED
: 'granted' (許可)DENIED
: 'denied' (拒否)NEVER_ASK_AGAIN
: 'never_ask_again' (今後表示しない)
リファレンス
メソッド
check()
static check(permission: Permission): Promise<boolean>;
指定されたパーミッションが許可されているかどうかを示すブール値に解決されるpromiseを返します。
パラメータ
名前 | 型 | 必須 | 説明 |
---|---|---|---|
permission | string | はい | チェックするパーミッション。 |
request()
static request(
permission: Permission,
rationale?: Rationale,
): Promise<PermissionStatus>;
ユーザーにパーミッションを有効にするよう促し、ユーザーがリクエストを許可したか、拒否したか、または再度尋ねられたくないかを示す文字列値(上記の結果文字列を参照)に解決されるpromiseを返します。
rationale
が指定された場合、この関数はOSにパーミッションが必要な理由を説明するダイアログを表示する必要があるかどうかを確認し(https://developer.android.com/training/permissions/requesting.html#explain)、その後、システムのパーミッションダイアログを表示します。
パラメータ
名前 | 型 | 必須 | 説明 |
---|---|---|---|
permission | string | はい | リクエストするパーミッション。 |
rationale | object | いいえ | 以下のrationale を参照してください。 |
Rationale
名前 | 型 | 必須 | 説明 |
---|---|---|---|
title | string | はい | ダイアログのタイトル。 |
message | string | はい | ダイアログのメッセージ。 |
buttonPositive | string | はい | 肯定的なボタンのテキスト。 |
buttonNegative | string | いいえ | 否定的なボタンのテキスト。 |
buttonNeutral | string | いいえ | 中立的なボタンのテキスト。 |
requestMultiple()
static requestMultiple(
permissions: Permission[],
): Promise<{[key in Permission]: PermissionStatus}>;
ユーザーに同じダイアログで複数のパーミッションを有効にするよう促し、パーミッションをキーとし、ユーザーがリクエストを許可したか、拒否したか、または再度尋ねられたくないかを示す文字列(上記の結果文字列を参照)を値とするオブジェクトを返します。
パラメータ
名前 | 型 | 必須 | 説明 |
---|---|---|---|
permissions | array | はい | リクエストするパーミッションの配列。 |