uniapp:安卓一次性获取所需权限

const checkPermission = () => {
  //title,权限未开启提示的消息
  return new Promise((resolve) => {
    const permissions: any = {
      'android.permission.FOREGROUND_SERVICE': '前台服务', // 前台服务
      'android.permission.WAKE_LOCK': '允许程序在手机屏幕关闭后后台进程仍然运行', // 允许程序在手机屏幕关闭后后台进程仍然运行
      'android.permission.VIBRATE': '允许程序振动', // 允许程序振动
      'android.permission.BLUETOOTH': '蓝牙权限', // 蓝牙权限
      'android.permission.BLUETOOTH_SCAN': '蓝牙权限', // 蓝牙权限
      'android.permission.BLUETOOTH_ADMIN': '蓝牙权限', // 蓝牙权限
      'android.permission.BLUETOOTH_CONNECT': '蓝牙权限', // 蓝牙权限
      'android.permission.ACCESS_FINE_LOCATION': '位置信息权限', // 定位
      'android.permission.ACCESS_COARSE_LOCATION': '位置信息权限', // 定位
      'android.permission.CALL_PHONE': '电话权限' // 电话权限
    };
    plus.android.requestPermissions(
      Object.keys(permissions), //这里面放需要的权限,我这边主要是打电话以及通讯录的一些操作权限
      function (resultObj) {
        if (resultObj.granted.length < Object.keys(permissions).length) {
          //resultObj.granted是授权的权限数组
          //resultObj.deniedAlways是拒绝的权限数组
          resolve(false);
          let noAuth: any = '';
          resultObj.deniedAlways.forEach((key: string) => {
            noAuth += (noAuth ? ',' : '') + permissions[key];
          });
          uni.showModal({
            content: '程序运行需获取以下权限:' + noAuth,
            showCancel: false,
            success() {
              //没有开对应的权限,打开app的系统权限管理页
              let Intent = plus.android.importClass('android.content.Intent');
              let Settings = plus.android.importClass('android.provider.Settings');
              let Uri = plus.android.importClass('android.net.Uri');
              let mainActivity = plus.android.runtimeMainActivity();
              let intent = new Intent();
              intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
              let uri = Uri.fromParts('package', mainActivity.getPackageName(), null);
              intent.setData(uri);
              mainActivity.startActivity(intent);
            }
          });
        } else {
          resolve(true);
        }
      }
    );
  });
};

export default checkPermission;

使用

import checkPermission from './authDisposableGet';
checkPermission(); // 可以使用async/await或then/catch

你可能感兴趣的:(uniapp,android)