当前位置:   article > 正文

React Native申请Android权限,PermissionsAndroid,权限申请多权限申请,这篇就够了_react-native-permissions

react-native-permissions

RN权限申请

最基础的一步,先在android的AndroidManifest.xml文件中添加权限声明
就像这样。
在这里插入图片描述
然后使用reactNative自带的权限管理API,使用比较简单。

PermissionsAndroid和它的三个方法

这个API主要使用的就是三个方法,用于检查是否拥有权限的check方法,请求权限的request方法,请求多个权限的requestMultiple方法,

  • check(permission):检查传入的权限是否经过授权,返回的是一个promise,解析为布尔值。

  • request(permission,[rationale]):传入需要请求的权限,第二个参数rationale对象可以看官方文档,尾部链接,这是个可选项,

  • requestMultiple(permission): 传入一个包含多个权限的数组。

请求权限返回的结果如下:

  • GRANTED: ‘granted’, 表示用户已授权
  • DENIED: ‘denied’, 表示用户已拒绝
  • NEVER_ASK_AGAIN: ‘never_ask_again’,表示用户已拒绝,且不愿被再次询问。

先从android 6.0以下的版本说起,

据说六点零以下版本,权限写在AndroidManifest.xml文件里就好,这个时候权限都可以直接请求到,这个时候的check始终返回true,并且request请求始终返回PermissionsAndroid.RESULTS.GRANTED
写法和下面六点零以上版本一样

android6.0以上版本

首先是请求单个相机权限的标准案例:

async requestCameraPermissions() {
    try {
      const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.CAMERA,
        {
          title: '申请相机权限',
          message: '不给权限不干活',
          buttonPositive: 'OK',
        },
      );
      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        infoToast('已获取相机权限');
      } else {
        errorToast('获取权限失败');
      }
    } catch (err) {
      console.log(err);
    }
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

因为是请求权限是个异步过程,所以需要async和await关键字,然后判断granted是否等于PermissionsAndroid.RESULTS.GRANTED来判断是否请求成功,
然后再我的小米上运行:
在这里插入图片描述
然后就获取成功了

获取多个权限

和上文差不多,见下文:

async requestAllPermissions() {
    try {
      //申请多个权限,传入一个权限对象数组
      const granted = await PermissionsAndroid.requestMultiple([
        PermissionsAndroid.PERMISSIONS.PROCESS_OUTGOING_CALLS,
        PermissionsAndroid.PERMISSIONS.CALL_PHONE,
        PermissionsAndroid.PERMISSIONS.USE_SIP,
      ]);
      if (
        granted['android.permission.CALL_PHONE'] ===
        PermissionsAndroid.RESULTS.GRANTED
      ) {
        console.log('CALL_PHONE 权限已获取');
      } 
      if (
        granted['android.permission.PROCESS_OUTGOING_CALLS'] ===
        PermissionsAndroid.RESULTS.GRANTED
      ) {
        console.log('PROCESS_OUTGOING_CALLS 权限已获取');
      } 
      if (
        granted['android.permission.USE_SIP'] ===
        PermissionsAndroid.RESULTS.GRANTED
      ) {
        console.log('USE_SIP 权限已获取');
      }
    } catch (err) {
      console.log(err);
    }
  }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

简单写了一下,是不是简单的一批,
在这里插入图片描述
可以看到,确实获取了多个权限。
可以把请求权限的方法放在项目初次进入或者放在需要使用权限的地方
PermissionsAndroid的中文的官方文档 :https://reactnative.cn/docs/next/permissionsandroid#%E7%A4%BA%E4%BE%8B

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号