HarmonyOS 鸿蒙Next权限获取

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next权限获取

我参照文档的代码,在组件内部调用位置权限,
function reqPermissionsFromUser(permissions: Array<Permissions>, context: common.UIAbilityContext): void {
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
// requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
atManager.requestPermissionsFromUser(context, permissions).then((data) => {
let grantStatus: Array<number> = data.authResults;
let length: number = grantStatus.length;
for (let i = 0; i < length; i++) {
if (grantStatus[i] === 0) {
// TODO 用户授权,可以继续访问目标操作

} else {
// 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
showToast(‘请前往系统设置打开位置权限’)
return;
}
}
// 授权成功
}).catch((err: BusinessError) => {
console.error(Failed to request permissions from user. Code is ${err.code}, message is ${err.message});
})
}
根本就没有权限申请弹窗,直接走 showToast(‘请前往系统设置打开位置权限’),而且系统设置也没有位置权限,怎么加上?我在module.json5里也有权限说明了啊

4 回复
按照文档多看一下,我之前配置权限后没有弹出,有可能是应用里没import相关模块。可以参考这个文章:#HarmonyOS NEXT体验官#实战鸿蒙,实现一款权限请求框架-鸿蒙开发者社区-51CTO.COM

额嗯,这个文档很有用,但我的权限报这个错: 该问题是由于默认应用等级为normal,只能使用normal等级的权限,如果使用了system_basic或system_core等级的权限,将导致报错。 我使用了下面推荐的自动签名也不行,应用直接起不来,您遇到过这种情况吗?怎么解决的呢

你是需要位置权限,这个可以获取的,我这边测试没问题。如果有这种报错【该问题是由于默认应用等级为normal,只能使用normal等级的权限,如果使用了system_basic或system_core等级的权限,将导致报错】,检查一下还有其他权限越级了,拿不到权限?

在HarmonyOS 鸿蒙Next中获取权限,主要分为系统授权(system_grant)和用户授权(user_grant)两种。系统授权在应用的安装包中声明,安装时自动授予,无需用户操作。用户授权则涉及敏感信息,系统会弹出对话框询问用户是否授权。

对于权限的声明,开发者需在应用的config.json或module.json5文件中进行。动态申请敏感权限时,需调用系统API检查权限并请求用户授权。处理用户授权结果时,需优雅地处理权限拒绝情况,避免应用崩溃。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部