HarmonyOS 鸿蒙Next中浏览器申请麦克风、摄像头权限会导致多次申请
HarmonyOS 鸿蒙Next中浏览器申请麦克风、摄像头权限会导致多次申请 能否web只申请一次权限请求,而不是每次进web都要去申请,我这边找到了个官网的例子,没太理解,这代码即是应用侧申请了,web侧又申请了?
import { webview } from '@kit.ArkWeb';
import { abilityAccessCtrl } from '@kit.AbilityKit';
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController()
aboutToAppear() {
// 配置Web开启调试模式
webview.WebviewController.setWebDebuggingAccess(true);
let atManager = abilityAccessCtrl.createAtManager();
atManager.requestPermissionsFromUser(getContext(this), ['ohos.permission.CAMERA', 'ohos.permission.MICROPHONE'])
.then(data => {
let result: Array<number> = data.authResults;
let hasPermissions1 = true;
result.forEach(item => {
if (item === -1) {
hasPermissions1 = false;
}
})
if (hasPermissions1) {
console.info("hasPermissions1");
} else {
console.info(" not hasPermissions1");
}
}).catch(() => {
return;
});
}
build() {
Column() {
Web({ src: $rawfile('index.html'), controller: this.controller })
.onPermissionRequest(event => {
if (event) {
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();
}
})
}
})
}
}
}
更多关于HarmonyOS 鸿蒙Next中浏览器申请麦克风、摄像头权限会导致多次申请的实战教程也可以访问 https://www.itying.com/category-93-b0.html
测试了一下,demo中确实每次使用都会去重新申请,可在第一次申请后存储一个变量flag,再次触发event时判断flag的值。
官方给的示例,需要应用侧首次授权(一次即可),在modulu.json文件里声明权限,因为在应用侧授权了后,再对网页访问的给定权限进行授权。网页权限授权的前提是应用侧要先有此权限。不然的话用不了。
更多关于HarmonyOS 鸿蒙Next中浏览器申请麦克风、摄像头权限会导致多次申请的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,浏览器申请麦克风、摄像头权限时可能会导致多次申请的问题。这是由于鸿蒙系统的权限管理机制与浏览器的权限请求流程存在一定的交互问题。当浏览器尝试访问麦克风或摄像头时,系统会触发权限申请弹窗,但在某些情况下,浏览器可能会重复发起权限请求,导致用户多次收到权限申请提示。
这种现象可能与浏览器的权限请求策略、系统权限管理模块的实现以及应用与系统之间的交互机制有关。鸿蒙系统在权限管理上采用了细粒度的控制机制,浏览器在每次访问敏感设备时都需要明确申请权限,而某些浏览器的实现可能导致权限请求被重复触发。
开发者可以通过优化浏览器的权限请求逻辑,减少不必要的权限申请,或者通过系统层面调整权限管理的交互流程,来避免多次申请的问题。此外,鸿蒙系统后续版本可能会对权限管理机制进行优化,以减少类似问题的发生。


