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'
リファレンス
Methods
check()
static check(permission: Permission): Promise<boolean>;
指定されたパーミッションが付与されているかどうかを示す真偽値に解決されるプロミスを返します。
パラメータ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| permission | string | はい | 確認するパーミッション。 |
request()
static request(
permission: Permission,
rationale?: Rationale,
): Promise<PermissionStatus>;
ユーザーにパーミッションを有効にするよう促し、ユーザーが要求を許可または拒否したか、再度尋ねられたくないかを示す文字列値(上記の結果文字列を参照)に解決されるプロミスを返します。
rationaleが提供されている場合、この関数はパーミッションが必要な理由を説明するダイアログを表示する必要があるかどうかをOSに確認し(https://developer.android.com/training/permissions/requesting.html#explain)、その後システムパーミッションダイアログを表示します。
パラメータ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| permission | string | はい | 要求するパーミッション。 |
| rationale | object | No | 以下のrationaleを参照してください。 |
Rationale
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| title | string | はい | ダイアログのタイトル。 |
| message | string | はい | ダイアログのメッセージ。 |
| buttonPositive | string | はい | 肯定的なボタンのテキスト。 |
| buttonNegative | string | No | 否定的なボタンのテキスト。 |
| buttonNeutral | string | No | 中立的なボタンのテキスト。 |
requestMultiple()
static requestMultiple(
permissions: Permission[],
): Promise<{[key in Permission]: PermissionStatus}>;
ユーザーに同じダイアログで複数のパーミッションを有効にするよう促し、ユーザーが要求を許可または拒否したか、再度尋ねられたくないかを示す、キーがパーミッションで値が文字列(上記の結果文字列を参照)のオブジェクトを返します。
パラメータ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| permissions | array | はい | 要求するパーミッションの配列。 |