メインコンテンツへスキップ

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()

tsx
static check(permission: Permission): Promise<boolean>;

指定されたパーミッションが許可されているかどうかを示すブール値に解決されるpromiseを返します。

パラメータ

名前必須説明
permissionstringはいチェックするパーミッション。

request()

tsx
static request(
permission: Permission,
rationale?: Rationale,
): Promise<PermissionStatus>;

ユーザーにパーミッションを有効にするよう促し、ユーザーがリクエストを許可したか、拒否したか、または再度尋ねられたくないかを示す文字列値(上記の結果文字列を参照)に解決されるpromiseを返します。

rationaleが指定された場合、この関数はOSにパーミッションが必要な理由を説明するダイアログを表示する必要があるかどうかを確認し(https://developer.android.com/training/permissions/requesting.html#explain)、その後、システムのパーミッションダイアログを表示します。

パラメータ

名前必須説明
permissionstringはいリクエストするパーミッション。
rationaleobjectいいえ以下のrationaleを参照してください。

Rationale

名前必須説明
titlestringはいダイアログのタイトル。
messagestringはいダイアログのメッセージ。
buttonPositivestringはい肯定的なボタンのテキスト。
buttonNegativestringいいえ否定的なボタンのテキスト。
buttonNeutralstringいいえ中立的なボタンのテキスト。

requestMultiple()

tsx
static requestMultiple(
permissions: Permission[],
): Promise<{[key in Permission]: PermissionStatus}>;

ユーザーに同じダイアログで複数のパーミッションを有効にするよう促し、パーミッションをキーとし、ユーザーがリクエストを許可したか、拒否したか、または再度尋ねられたくないかを示す文字列(上記の結果文字列を参照)を値とするオブジェクトを返します。

パラメータ

名前必須説明
permissionsarrayはいリクエストするパーミッションの配列。