在permission.js中编写权限校验方法。
const androidPermissions = {
camera: "android.permission.CAMERA", // 摄像头权限
location: "android.permission.ACCESS_FINE_LOCATION", // 位置权限
calendar: {
read: "android.permission.READ_CALENDAR", // // 日历读取权限
write: "android.permission.WRITE_CALENDAR", // // 日历写入权限
},
storage: {
read: "android.permission.READ_EXTERNAL_STORAGE", // 存储读取权限
write: "android.permission.WRITE_EXTERNAL_STORAGE", // 存储写入权限
},
record: "android.permission.RECORD_AUDIO", // 麦克风权限
contact: {
read: "android.permission.READ_CONTACTS", // 联系人读取权限
write: "android.permission.WRITE_CONTACTS", // 联系人写入权限
},
sms: {
read: "android.permission.READ_SMS", // 短信读取权限
send: "android.permission.SEND_SMS", //短信发送权限
receive: "android.permission.RECEIVE_SMS", // 短信接收权限
},
state: "android.permission.READ_PHONE_STATE", // 手机识别码权限
phone: "android.permission.CALL_PHONE", // 拨打电话权限
log: "android.permission.READ_CALL_LOG", // 通话记录权限
};
function getPermissionList(permissionID) {
const id = androidPermissions[permissionID];
const list = [];
if (typeof id == "string") {
list[0] = id;
} else {
for (let key in id) {
list.push(id[key]);
}
}
return list;
}
function androidPermissionCheck(permissionID) {
return new Promise((resolve, reject) => {
console.log('plus', plus);
if (plus) {
let ids = getPermissionList(permissionID);
console.log('ids', ids);
plus.android.requestPermissions(
ids,
function(result) {
let res = 0;
for (let i = 0; i < result.granted.length; i++) {
let permission = result.granted[i];
console.log("已获取的权限:", permission);
res = 1;
}
for (let i = 0; i < result.deniedPresent.length; i++) {
let permission = result.deniedPresent[i];
console.log("本次已拒绝的权限:", permission);
res = 0;
}
for (let i = 0; i < result.deniedAlways.length; i++) {
let permission = result.deniedAlways[i];
console.log("永久拒绝的权限:", permission);
res = -1;
}
resolve({
code: 1,
data: res,
});
},
(error) => {
reject({
code: 2,
data: `code:${error.code},msg:${error.message}!`,
});
}
);
}
});
}
const permissionCheck = {
android: androidPermissionCheck,
};
const permission = permissionCheck['android'];
export default permission;
在需要的权限校验的地方调用方法
// 检测麦克风权限
async checkCamera() {
try {
let checkResult = await permission("record");
console.log("检测信息:", checkResult);
if (checkResult.code == 1) {
let result = checkResult.data;
if (result == 1) {
console.log("授权成功!");
return true
}
if (result == 0) {
console.log("授权已拒绝!");
this.$refs.uToast.show({
position: "top",
width: "2000",
type: "error",
message: "您已拒绝麦克风权限,录屏功能无法正常运行!",
});
this.isShow = false;
return false
}
if (result == -1) {
console.log("您已永久拒绝麦克风权限,请在应用设置中手动打开!");
this.$refs.uToast.show({
position: "top",
width: "2000",
type: "error",
message: "您已永久拒绝麦克风权限,请在应用设置中手动打开!",
});
this.isShow = false;
return false
}
}
} catch (err) {
console.log("授权失败:", err);
}
},