下面是完整的.js 拷过去就可以用了
import {PermissionsAndroid, ToastAndroid }from 'react-native';
/*
// 使用步骤
_checkPermission = async () => {
const permissions = [permission.WRITE_EXTERNAL_STORAGE,permission.READ_EXTERNAL_STORAGE];
// 检查权限 等待异步函数的返回值
const granted = await checkPermission(permission.WRITE_EXTERNAL_STORAGE);
if (granted) {
// 有权限 --> 实现业务逻辑
this.onImageLoad(this.saveImage);
} else {
// 没有权限 --> 获取权限 a --> true 授权了
let granted = requestMultiplePermission(permissions);
if (granted['android.permission.WRITE_EXTERNAL_STORAGE'] === 'granted') {
console.log('通过权限 可以使用该功能');
this.onImageLoad(this.saveImage);
} else {
console.log('拒绝了权限 无法使用该功能');
}
}
};
*/
/**
* Toast 显示提示
* @param data 显示的内容 string
* @private
*/
export const _show = (data) => {
ToastAndroid.show(data, ToastAndroid.SHORT);
};
/**
* Android 权限检查 第一步
*/
export const checkPermission =async (permission) => {
try {
//返回Promise类型 异步函数 await --> 等待异步函数完成 --> 获取到返回值
const granted =await PermissionsAndroid.check(permission);
// 返回 异步函数 得到的值
return granted;
}catch (err) {
this._show(err.toString());
return false;
}
};
/**
* 权限请求 第二部
* @param permissions 权限数组/具体权限
* @returns {Promise}
*/
export const requestMultiplePermission =async (permissions) => {
try {
// const permissions = [
// PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
// PermissionsAndroid.PERMISSIONS.CAMERA];
const granted =await PermissionsAndroid.requestMultiple(permissions);
// if (granted['android.permission.WRITE_EXTERNAL_STORAGE'] === 'granted') {} else {}
return granted;
}catch (err) {
this._show(err.toString());
return null;
}
};
/**
* 危险权限 --> 需要用户手动授权
*/
export const permission = {
// 联系人
WRITE_CONTACTS:PermissionsAndroid.PERMISSIONS.WRITE_CONTACTS,
GET_ACCOUNTS:PermissionsAndroid.PERMISSIONS.GET_ACCOUNTS,
READ_CONTACTS:PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
// 打电话
READ_CALL_LOG:PermissionsAndroid.PERMISSIONS.READ_CALL_LOG,
READ_PHONE_STATE:PermissionsAndroid.PERMISSIONS.READ_PHONE_STATE,
CALL_PHONE:PermissionsAndroid.PERMISSIONS.CALL_PHONE,
WRITE_CALL_LOG:PermissionsAndroid.PERMISSIONS.WRITE_CALL_LOG,
USE_SIP:PermissionsAndroid.PERMISSIONS.USE_SIP,
PROCESS_OUTGOING_CALLS:PermissionsAndroid.PERMISSIONS.PROCESS_OUTGOING_CALLS,
ADD_VOICEMAIL:PermissionsAndroid.PERMISSIONS.ADD_VOICEMAIL,
// 日历
READ_CALENDAR:PermissionsAndroid.PERMISSIONS.READ_CALENDAR,
WRITE_CALENDAR:PermissionsAndroid.PERMISSIONS.WRITE_CALENDAR,
// 照相机
CAMERA:PermissionsAndroid.PERMISSIONS.CAMERA,
// 传感器
BODY_SENSORS:PermissionsAndroid.PERMISSIONS.BODY_SENSORS,
// 定位
ACCESS_FINE_LOCATION:PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
ACCESS_COARSE_LOCATION:PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,
// 存储
READ_EXTERNAL_STORAGE:PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
WRITE_EXTERNAL_STORAGE:PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
// 麦克风
RECORD_AUDIO:PermissionsAndroid.PERMISSIONS.RECORD_AUDIO,
// 短信
READ_SMS:PermissionsAndroid.PERMISSIONS.READ_SMS,
RECEIVE_WAP_PUSH:PermissionsAndroid.PERMISSIONS.RECEIVE_WAP_PUSH,
RECEIVE_MMS:PermissionsAndroid.PERMISSIONS.RECEIVE_MMS,
RECEIVE_SMS:PermissionsAndroid.PERMISSIONS.RECEIVE_SMS,
SEND_SMS:PermissionsAndroid.PERMISSIONS.SEND_SMS,
READ_CELL_BROADCASTS:PermissionsAndroid.PERMISSIONS.READ_CELL_BROADCASTS
};
/*
下面是危险权限
group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS
group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL
group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR
group:android.permission-group.CAMERA
permission:android.permission.CAMERA
group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS
group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO
group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS
*/
Thank you for sharing your talent as a free resource online.
网友评论