Как проверить разрешение Android разрешение успешно или нет? - PullRequest
0 голосов
/ 03 июля 2019

В моем приложении RN у меня есть следующий код.

import { PermissionsAndroid } from 'react-native';

export default new Promise(() => {
   return PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.READ_CONTACTS, {
        title: 'Contacts List',
        message: 'Canvas would like to view your contacts',
   });
});

Что я хочу сделать, я хочу вернуться, если обещание выполнено успешно или нет. Затем я могу получить обещанный статус и обработать разрешения для Android в соответствии с этим. Но текущий код возвращает это.

40
:
0
_55
:
null
_65
:
0
_72
:
null
__proto__
:
Object

Что я здесь не так делаю?

Ответы [ 2 ]

1 голос
/ 03 июля 2019
const requestPermission = async (requestedType) => {
  try {
    return await PermissionsAndroid.requestMultiple(requestedType);
  } catch (e) {
    return e;
  }
};

 const permissionsRequired = [PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION];
 const permissionResponse = yield call(requestPermission, permissionsRequired);

Попробуйте код выше. Надеюсь, что это поможет.

1 голос
/ 03 июля 2019

Поскольку функция для текущего органа является асинхронной, если результат возвращается немедленно, значение возвращается до получения результата. Поэтому желательно проверять значение после помещения его в переменную. Или желательно получить результаты после преобразования синхронно.

То, что object в конце выглядит как желаемое значение.

пример (Использовать Async)

import {PermissionsAndroid} from 'react-native';

async function requestCameraPermission() {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.CAMERA,
      {
        title: 'Cool Photo App Camera Permission',
        message:
          'Cool Photo App needs access to your camera ' +
          'so you can take awesome pictures.',
        buttonNeutral: 'Ask Me Later',
        buttonNegative: 'Cancel',
        buttonPositive: 'OK',
      },
    );
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log('You can use the camera');
    } else {
      console.log('Camera permission denied');
    }
  } catch (err) {
    console.warn(err);
  }
}

пример (Использовать синхронизацию)

import {PermissionsAndroid} from 'react-native';

 function requestCameraPermission() {
  try {
     PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.CAMERA,
      {
        title: 'Cool Photo App Camera Permission',
        message:
          'Cool Photo App needs access to your camera ' +
          'so you can take awesome pictures.',
        buttonNeutral: 'Ask Me Later',
        buttonNegative: 'Cancel',
        buttonPositive: 'OK',
      },
    ).then(result =>  { console.log(result) }).catch(err => console.log(err));

  } catch (err) {
    console.warn(err);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...