HarmonyOS鸿蒙Next中按照样例代码实现后应用无法自动弹窗,权限申请失败
HarmonyOS鸿蒙Next中按照样例代码实现后应用无法自动弹窗,权限申请失败
环境信息
HarmonyOS 3.1.0, P50 Pro JAD-AL00
crash报错
Device info:OpenHarmony 3.2
Build info:OpenHarmony 3.2.9.1
Module name:com.huawei.maps.navi.hos
Version:1.0.0
Pid:11257
Uid:20040004
Lifetime: 0.000000s
Js-Engine: ark
page: pages/Index.js
Error message: Cannot read property NAVIGATION of undefined
'scenario': geoLocationManager.LocationRequestScenario.NAVIGATION,
^
Stacktrace:
at startLocation (entry/src/main/ets/manager/LocationManager.ts:13:19)
at action (entry/src/main/ets/pages/Index.ets:55:17)
代码
let context = this.context;
let atManager = abilityAccessCtrl.createAtManager();
let permissionList: Array<Permissions> = [
'ohos.permission.INTERNET',
'ohos.permission.APPROXIMATELY_LOCATION',
'ohos.permission.LOCATION',
'ohos.permission.LOCATION_IN_BACKGROUND'
];
atManager.requestPermissionsFromUser(context, permissionList).then(
(data) => {
let grantStatus: Array<number> = data.authResults;
let length: number = grantStatus.length;
for (let i = 0; i < length; i++) {
if (grantStatus[i] === 0) {
// 用户授权,可以继续访问目标操作
LogUtil.info('EntryAbility.onWindowStageCreate', 'User grant: ' + permissionList[i]);
} else {
// 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
LogUtil.fatal('EntryAbility.onWindowStageCreate', 'User denied: ' + permissionList[i]);
}
}
// 授权成功
}).catch((err) => {
LogUtil.error('EntryAbility.onWindowStageCreate', `Get permission failed, code is ${err.code}, message is ${err.message}`);
})
执行结果
07-03 17:55:04.867 10172-149/? I 00000/EntryAbility.onWindowStageCreate: -LOG-UTIL- User grant: ohos.permission.INTERNET
07-03 17:55:04.867 10172-149/? F 00000/EntryAbility.onWindowStageCreate: -LOG-UTIL- User denied: ohos.permission.APPROXIMATELY_LOCATION
07-03 17:55:04.868 10172-149/? F 00000/EntryAbility.onWindowStageCreate: -LOG-UTIL- User denied: ohos.permission.LOCATION
07-03 17:55:04.868 10172-149/? F 00000/EntryAbility.onWindowStageCreate: -LOG-UTIL- User denied: ohos.permission.LOCATION_IN_BACKGROUND
07-03 17:55:36.518 10172-149/? E 00000/LocationManager::startLocation: -LOG-UTIL- Exception: BussinessError 201: Permission denied.
更多关于HarmonyOS鸿蒙Next中按照样例代码实现后应用无法自动弹窗,权限申请失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
您在module.json5里面配置了相应的权限了吗?[https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/accesstoken-guidelines-0000001493744016-V3]
更多关于HarmonyOS鸿蒙Next中按照样例代码实现后应用无法自动弹窗,权限申请失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
配置了,如下:
-
"name" : "ohos.permission.INTERNET"
"reason": "$string:network_permission_reason"
"usedScene": { "abilities": ["EntryAbility"], "when": "always" }
-
"name" : "ohos.permission.GET_NETWORK_INFO"
"reason": "$string:network_permission_reason"
"usedScene": { "abilities": ["EntryAbility"], "when": "always" }
-
"name" : "ohos.permission.APPROXIMATELY_LOCATION"
"reason": "$string:location_permission_reason"
"usedScene": { "abilities": ["EntryAbility"], "when": "always" }
-
"name" : "ohos.permission.LOCATION"
"reason": "$string:location_permission_reason"
"usedScene": { "abilities": ["EntryAbility"], "when": "always" }
-
"name" : "ohos.permission.LOCATION_IN_BACKGROUND"
"reason": "$string:location_permission_reason"
"usedScene": { "abilities": ["EntryAbility"], "when": "always" }
-
"name" : "ohos.permission.READ_MEDIA"
"reason": "$string:media_access_permission_reason"
"usedScene": { "abilities": ["EntryAbility"], "when": "always" }
-
"name" : "ohos.permission.WRITE_MEDIA"
"reason": "$string:media_access_permission_reason"
"usedScene": { "abilities": ["EntryAbility"], "when": "always" }
-
"name" : "ohos.permission.ACCESS_NOTIFICATION_POLICY"
"reason": "$string:media_access_permission_reason"
"usedScene": { "abilities": ["EntryAbility"], "when": "always" }
请问楼主这个问题解决了吗,如何解决的呢?我也出现了这个问题,使用
requestPermissionsFromUser()方法,但是并没有出现授权弹窗,目前我是使用的API9,并且基于arkts语法。
怀疑跟这个权限有关,去掉后可以弹窗
"name": "ohos.permission.LOCATION_IN_BACKGROUND",
但后台定位权限需要申请怎么办呢?
我去掉这个也没有弹窗,只能手动加动态授权弹窗,不知道怎么搞,
回复的格式真是太不友好了,重新发一个
```bash
"requestPermissions": [
{
"name" : "ohos.permission.INTERNET",
"reason": "${string}:network_permission_reason",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "always"
}
},
{
"name" : "ohos.permission.GET_NETWORK_INFO",
"reason": "${string}:network_permission_reason",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "always"
}
},
{
"name" : "ohos.permission.APPROXIMATELY_LOCATION",
"reason": "${string}:location_permission_reason",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "always"
}
},
{
"name" : "ohos.permission.LOCATION",
"reason": "${string}:location_permission_reason",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "always"
}
},
{
"name" : "ohos.permission.LOCATION_IN_BACKGROUND",
"reason": "${string}:location_permission_reason",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "always"
}
},
{
"name" : "ohos.permission.READ_MEDIA",
"reason": "${string}:media_access_permission_reason",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "always"
}
},
{
"name" : "ohos.permission.WRITE_MEDIA",
"reason": "${string}:media_access_permission_reason",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "always"
}
},
{
"name" : "ohos.permission.ACCESS_NOTIFICATION_POLICY",
"reason": "${string}:media_access_permission_reason",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "always"
}
}
]
在HarmonyOS鸿蒙Next中,应用无法自动弹窗且权限申请失败,可能原因包括:
-
未在
config.json
中正确声明所需权限; -
未在代码中调用
requestPermissionsFromUser
方法; -
设备设置中禁用了相关权限。
请检查权限声明、调用逻辑及设备设置,确保权限申请流程正确执行。