Spec-Zone.ru › React Native

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API