HarmonyOS 鸿蒙Next 添加敏感权限,动态申请权限时没弹授权弹框
HarmonyOS 鸿蒙Next 添加敏感权限,动态申请权限时没弹授权弹框
需要先申请模糊位置权限ohos.permission.APPROXIMATELY_LOCATION,才可申请ohos.permission.LOCATION。 这两个都配置了之后就会有LOCATION的弹窗。
,您先将您module.json5中的location权限改为:
'requestPermissions': [
{'name':'ohos.permission.INTERNET'},
{'name':'ohos.permission.APPROXIMATELY_LOCATION',
'reason': '$string:app_name',
'usedScene': {
'abilities': [
'EntryAbility'
],
'when': 'inuse'
}
},
{
'name':'ohos.permission.LOCATION',
'reason': '$string:app_name',
'usedScene': {
'abilities': [
'EntryAbility'
],
'when': 'inuse'
}
}
],
然后将EntryAblity.ets中的onWindowStageCreate 替换为:
onWindowStageCreate(windowStage: window.WindowStage): void {
// Main window is created, set main page for this ability
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
let permissions: Array<Permissions> = [
'ohos.permission.APPROXIMATELY_LOCATION',
'ohos.permission.LOCATION',
];
//校验当前用户是否已授权
let atManager = abilityAccessCtrl.createAtManager();
atManager.requestPermissionsFromUser(this.context,permissions)
.then((data) => {
console.info('data:' + JSON.stringify(data));
console.info('data permissions:' + data.permissions);
console.info('data authResults:' + data.authResults);
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
windowStage.loadContent('pages/Page0', (err, data) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
});
})
.catch((err: BusinessError) => {
console.info('data:' + JSON.stringify(err));
})
}
因为AuthUtil应该是您封装的类,我这边看不到具体实现。请您用我提供的代码试下是否有定位弹框。
更多关于HarmonyOS 鸿蒙Next 添加敏感权限,动态申请权限时没弹授权弹框的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,添加敏感权限并尝试动态申请时,如果未弹出授权弹框,可能的原因及处理方式如下:
-
权限声明缺失:确保在
config.json
文件中已正确声明所需敏感权限。例如,申请位置权限需添加"ohos.permission.READ_LOCATION"
和"ohos.permission.WRITE_LOCATION"
。 -
权限分组检查:部分权限属于同一权限组,若已授予组内其他权限,系统可能不再弹出弹框。确认是否已授予同类权限。
-
应用状态:应用处于后台或被系统限制时,可能无法弹出权限请求弹框。确保应用在前台运行且未被系统限制。
-
系统策略:某些系统策略可能阻止权限弹框的显示,如设备处于特定模式(如儿童模式)。检查设备设置,确保无相关限制。
-
代码实现:检查动态申请权限的代码实现是否正确,确保使用了正确的API和逻辑。
-
版本兼容性:确认鸿蒙系统版本与API兼容性,部分新权限或特性可能在旧版本系统中不支持。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html