如何在React Native Android中检查用户是否已授予相机权限?

5

应用程序启动后,我会向用户请求使用摄像头的权限。但是在打开摄像头之前,如果我检查用户是否已授予摄像头权限,即使它被允许,我也会得到“false”的响应。

这是我的代码:

PermissionsAndroid.check('camera').then(response => {
            if (response === true){
                //Open scanner
            }
            else if (response === false){
                Alert("Please enable camera permission in device settings.")
            }
        })
4个回答

15
请尝试以下操作:
PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.CAMERA).then(response => { ..

而且不是

PermissionsAndroid.check('camera').then(response => { ..

2

首先导入所需依赖

import { PermissionsAndroid, Platform } from 'react-native';

然后在你的事件中使用以下代码。
if(Platform.OS=="android"){
      const permissionAndroid = await PermissionsAndroid.check('android.permission.CAMERA');
      if(permissionAndroid != PermissionsAndroid.RESULTS.granted){
        const reqPer = await PermissionsAndroid.request('android.permission.CAMERA');
        if(reqPer != 'granted'){
          return false;
        }
      }
    }

1

在这里,我使用了asyncawaitpromise,更容易理解一些。

import {PermissionsAndroid} from 'react-native';

export const checkReadContactsPermission = async ()=>{    

  //result would be false if not granted and true if required permission is granted.
  const result =  await PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.CAMERA);
  return result;
}

0

我尝试了上述方法,但请求权限的返回类型已更改为布尔值。

const permissionAndroid = await PermissionsAndroid.check('android.permission.CAMERA')
if (permissionAndroid != PermissionsAndroid.RESULTS.granted) {
  ...
} // this doesnt work

不要那样做,应该这样

const permissionAndroid = await PermissionsAndroid.check('android.permission.CAMERA')
if( permissionAndroid ){
...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接