uni-app 华为HarmonyOS4.2.0.155系统申请权限的一系列BUG
uni-app 华为HarmonyOS4.2.0.155系统申请权限的一系列BUG
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 15.0 (24A335) | CLI |
产品分类:uniapp/App
PC开发环境操作系统:Mac
手机系统:HarmonyOS NEXT
手机系统版本号:HarmonyOS NEXT Developer Beta1
手机厂商:华为
手机机型:HUAWEI P60
页面类型:vue
vue版本:vue3
打包方式:云端
CLI版本号:Vue3/Vite版
操作步骤:
- 在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,
});
}
);
});
}
更多关于uni-app 华为HarmonyOS4.2.0.155系统申请权限的一系列BUG的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
鸿蒙next上没有plus.android.requestPermissions啊
更多关于uni-app 华为HarmonyOS4.2.0.155系统申请权限的一系列BUG的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
那第三个问题呢,chooseImageAPIsourceType设置为[“album”, “camera”]时,点击相册是怎么调用权限的,为什么权限监听里只返回"android.permission.WRITE_EXTERNAL_STORAGE"
那鸿蒙next怎么调用系统权限
HarmonyOS4.2.0.155 不属于鸿蒙next吧 可能是我选择的有问题,因为我在选项里没有找到对应的系统
针对uni-app在华为HarmonyOS 4.2.0.155系统上申请权限时遇到的一系列BUG,这里提供一个基于uni-app框架的权限申请示例代码,并附带一些可能的解决思路,帮助你更好地应对这些问题。请注意,由于具体BUG情况未知,以下代码和思路更多是基于一般权限申请的通用做法。
示例代码
首先,确保你的manifest.json
文件中已经声明了需要的权限,例如:
"mp-weex": {
"app-plus": {
"distribute": {
"android": {
"permissions": [
"android.permission.CAMERA",
"android.permission.READ_EXTERNAL_STORAGE",
// 其他需要的权限
]
}
}
}
}
在uni-app中,你可以使用uni.getSetting
和uni.authorize
方法来检查和申请权限。以下是一个简单的权限申请流程示例:
function requestPermission(permission) {
return new Promise((resolve, reject) => {
uni.getSetting({
success: (res) => {
if (!res.authSetting[permission]) {
uni.authorize({
scope: permission,
success: () => {
resolve(true);
},
fail: () => {
// 用户拒绝授权
uni.showModal({
title: '提示',
content: '需要您的授权才能使用此功能',
success: (res) => {
if (res.confirm) {
// 引导用户去设置中授权
uni.openSetting({
success: (settingRes) => {
if (settingRes.authSetting[permission]) {
resolve(true);
} else {
reject(new Error('用户拒绝授权'));
}
},
fail: (err) => {
reject(err);
}
});
} else {
reject(new Error('用户取消'));
}
}
});
}
});
} else {
resolve(true);
}
},
fail: (err) => {
reject(err);
}
});
});
}
// 使用示例
requestPermission('scope.camera').then(() => {
console.log('权限申请成功');
}).catch((err) => {
console.error('权限申请失败', err);
});
解决思路
- 检查权限声明:确保
manifest.json
中声明的权限与实际申请的权限一致。 - 系统兼容性:检查uni-app和HarmonyOS的兼容性文档,看是否有已知的权限申请问题。
- 错误处理:增强错误处理逻辑,提供用户友好的反馈和引导。
- 日志记录:在申请权限的过程中添加日志记录,帮助定位问题。
- 更新uni-app框架:确保你使用的uni-app框架是最新版本,以修复可能的BUG。
希望这些信息能帮助你解决在华为HarmonyOS 4.2.0.155系统上申请权限时遇到的问题。