关于获取Android权限动态申请 - ImVeryGood/Loan GitHub Wiki

import {NativeModules, PermissionsAndroid, Platform} from 'react-native';
import {Utils} from '@react-native-mint/services';

const { RNMintNewDeviceInfo } = NativeModules;
class RNDevice {
  getSms(onSuccess: Object=>void) {
    this._checkAndroidPermission(onSuccess);
  }

  _checkAndroidPermission(onSuccess: any) {
    if (Platform.Version > 21) {
      let promise = PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.READ_SMS);
      promise.then((data) => {
        if (data) {
          RNMintNewDeviceInfo.getSms(onSuccess);
        } else {
          this._requestPermission(onSuccess);
        }
      });
    } else {
      RNMintNewDeviceInfo.getSms(onSuccess);
    }
  }


  async _requestPermission(onSuccess: any) {
    try {
      const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.READ_SMS,
      );
      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        RNMintNewDeviceInfo.getSms(onSuccess);
      } else {
        Utils.toast('关闭短信读取权限将影响部分功能使用');
      }
    } catch (err) {
    }
  }
  getAllApp(onSuccess: Object=>void){
     RNMintNewDeviceInfo.getAllApp(onSuccess);
  }
}
module.exports=new RNDevice();