PermissionsAndroid
Проект с нативным кодом необходим
Следующий раздел применим только к проектам с экспонированным нативным кодом. Если вы используете управляемый рабочий процесс Expo, см. руководство по Разрешениям в документации Expo для соответствующей альтернативы.
PermissionsAndroid предоставляет доступ к новой модели разрешений Android M. Так называемые «обычные» разрешения предоставляются по умолчанию при установке приложения, если они присутствуют в AndroidManifest.xml. Однако «опасные» разрешения требуют диалогового запроса. Для этих разрешений следует использовать этот модуль.
На устройствах до версии SDK 23 разрешения автоматически предоставляются, если они присутствуют в манифесте, поэтому check всегда должно приводить к true и request всегда должно разрешаться в PermissionsAndroid.RESULTS.GRANTED.
Если пользователь ранее отключил разрешение, о котором вы запрашиваете, ОС посоветует вашему приложению показать обоснование необходимости этого разрешения. Необязательный параметр 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'
Строки результатов для запроса разрешений
Доступны в виде констант в PermissionsAndroid.RESULTS:
-
GRANTED: 'granted' -
DENIED: 'denied' -
NEVER_ASK_AGAIN: 'never_ask_again'
Справочник
Методы
constructor()
constructor();
check()
check(permission);
Возвращает промис, разрешающий булево значение, указывающее, было ли предоставлено указанное разрешение.
Параметры:
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| permission | строка | Да | Разрешение, для которого требуется проверка. |
request()
request(permission, [rationale]);
Запрашивает у пользователя разрешение и возвращает промис, разрешающий строковое значение (см. строки результатов выше), указывающее, разрешил ли пользователь запрос, отклонил или больше не хочет, чтобы его спрашивали.
Если rationale предоставлен, эта функция проверяет у ОС, необходимо ли показывать диалоговое окно, объясняющее, почему требуется разрешение (https://developer.android.com/training/permissions/requesting.html#explain), а затем отображает системное диалоговое окно запроса разрешения.
Параметры:
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| permission | строка | Да | Разрешение, которое требуется запросить. |
| rationale | объект | Нет | См. rationale ниже. |
Обоснование:
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| title | строка | Да | Заголовок диалогового окна. |
| message | строка | Да | Сообщение диалогового окна. |
| buttonPositive | строка | Да | Текст положительной кнопки. |
| buttonNegative | строка | Нет | Текст отрицательной кнопки. |
| buttonNeutral | строка | Нет | Текст нейтральной кнопки. |
requestMultiple()
requestMultiple(permissions);
Запрашивает у пользователя разрешение на несколько разрешений в одном диалоговом окне и возвращает объект с разрешениями в качестве ключей и строками в качестве значений (см. строки результатов выше), указывающие, разрешил ли пользователь запрос, отклонил или больше не хочет, чтобы его спрашивали.
Параметры:
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| permissions | массив | Да | Массив разрешений, которые требуется запросить. |
© 2022 Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://reactnative.dev/docs/permissionsandroid