HarmonyOS 鸿蒙Next 关于web申请权限问题
HarmonyOS 鸿蒙Next 关于web申请权限问题
1.每次都要申请吗? 这边测试了一下,demo中确实每次使用都会去重新申请,可在第一次申请后存储一个变量flag,再次触发event时判断flag的值。 意思是业务侧进行记录是吗?
2.官方给的示例,需要应用侧首次授权(一次即可),在modulu.json文件里声明权限,因为在应用侧授权了后,再对网页访问的给定权限进行授权。网页权限授权的前提是应用侧要先有此权限。不然的话用不了。 意思是先应用侧申请,在web端申请吗?
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
try {
let context: Context = getContext(this) as common.UIAbilityContext;
atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA'], (err: BusinessError, data: PermissionRequestResult) => {
console.info('data:' + JSON.stringify(data));
console.info('data permissions:' + data.permissions);
console.info('data authResults:' + data.authResults);
})
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
2、底部的申请弹窗是自定义弹窗,官网demo中下面这段代码:
AlertDialog.show({
title: 'title',
message: 'text',
primaryButton: {
value: 'deny',
action: () => {
event.request.deny();
}
},
secondaryButton: {
value: 'onConfirm',
action: () => {
event.request.grant(event.request.getAccessibleResource());
}
},
cancel: () => {
event.request.deny();
}
})
3、如果不需要,可以直接去掉第2点这段代码,在onPermissionRequest属性的方法中直接写event.request.grant(event.request.getAccessibleResource());这行代码;也可以判断是否有权限,有权限时写event.request.grant(event.request.getAccessibleResource());这行代码,没权限时可提示用户在系统应用“设置”的界面中,手动授予权限。<br>
参考demo:
if (event) {
let bundleInfo =
await bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_REQUESTED_PERMISSION);
let cameraIndex = bundleInfo.reqPermissionDetails.findIndex((item) =>
item.name === "ohos.permission.CAMERA");
let cameraStatus = bundleInfo.permissionGrantStates[cameraIndex]
if (cameraStatus === -1) {
//提示授权
prompt.showToast({
message: '在系统应用“设置”的界面中,手动授予权限',
duration: 2000
});
} else {
event.request.grant(event.request.getAccessibleResource());
}
}
关于HarmonyOS 鸿蒙Next的web申请权限问题,以下是一些可能的原因和解决方案:
-
权限分类与申请方式:
- 鸿蒙Next系统对权限进行了细致分类,包括系统授权和用户授权。系统授权通常自动完成,适用于非敏感信息权限。用户授权则需要用户明确许可,适用于敏感信息权限。
- 请确保根据权限类型选择合适的申请方式,并在应用的配置文件中正确声明所需权限。
-
权限申请未通过审核:
- 华为会对权限申请进行审核,如果认为存在风险或不符合要求,可能会驳回申请。
- 请检查申请中关于权限使用场景的描述是否清晰准确,是否符合华为的政策要求。
-
设备兼容性与申请条件:
- 请确认设备是否支持鸿蒙Next系统升级,以及是否满足权限申请的硬件和软件要求。
- 确保已满足所有申请条件,如设备状态、系统版本、账户权限等。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。他们将能够提供更具体的帮助和指导。