1、在APP.vue中使用uni.createRequestPermissionListener监听权限申请,点击按钮使用plus.android.requestPermissions调用系统权限,弹出申请权限弹窗,点击拒绝,plus.android.requestPermissions的返回结果deniedAlways中有拒绝的权限
function requestAndroidPermission(permissionName) {
const changeMap = {
摄像头权限: ["android.permission.CAMERA"],
相册权限: ["android.permission.READ_MEDIA_IMAGES"],
麦克风权限: ["android.permission.RECORD_AUDIO"],
存储权限: ["android.permission.WRITE_EXTERNAL_STORAGE"],
};
return new Promise((resolve) => {
plus.android.requestPermissions(
changeMap[permissionName], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装
function (resultObj) {
let result = 0;
for (let i = 0; i < resultObj.granted.length; i++) {
let grantedPermission = resultObj.granted[i];
console.log("已获取的权限:" + grantedPermission);
result = 1;
}
for (let i = 0; i < resultObj.deniedPresent.length; i++) {
let deniedPresentPermission = resultObj.deniedPresent[i];
console.log("拒绝本次申请的权限:" + deniedPresentPermission);
result = 0;
}
for (let i = 0; i < resultObj.deniedAlways.length; i++) {
let deniedAlwaysPermission = resultObj.deniedAlways[i];
console.log("永久拒绝申请的权限:" + deniedAlwaysPermission);
result = -1;
}
resolve(result);
},
function (error) {
resolve({
code: error.code,
message: error.message,
});
}
);
});
}```
2、在步骤1的基础上,再次点击按钮使用plus.android.requestPermissions调用系统权限,不会弹出权限申请弹窗,并且在uni.createRequestPermissionListener的回调函数onRequest、onConfirm、onComplete中都会有返回值
3、使用chooseImageAPI上传图片,sourceType设置为["album"],此时点击选择相册,uni.createRequestPermissionListener的回调函数onRequest、onConfirm中都返回["android.permission.WRITE_EXTERNAL_STORAGE"]
y_曦 (作者)
那第三个问题呢,chooseImageAPIsourceType设置为["album", "camera"]时,点击相册是怎么调用权限的,为什么权限监听里只返回"android.permission.WRITE_EXTERNAL_STORAGE"
2024-12-18 10:04
y_曦 (作者)
那鸿蒙next怎么调用系统权限
2024-12-18 10:06
y_曦 (作者)
HarmonyOS4.2.0.155 不属于鸿蒙next吧 可能是我选择的有问题,因为我在选项里没有找到对应的系统
2024-12-18 10:27