在 Magic OS(荣耀基于鸿蒙的系统)中使用 uni.getLocation 出现 getLocation:fail 获取定位权限失败,是因为鸿蒙平台的权限机制与 Android 不同,需要单独配置鸿蒙特有的位置权限。
解决方案如下:
1. 配置鸿蒙权限文件
在 harmony-mp-configs/entry/src/main/module.json5 的 requestPermissions 字段中添加:
"ohos.permission.LOCATION",
"ohos.permission.APPROXIMATELY_LOCATION"
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
2. 代码中先申请授权再获取位置
必须先调用 uni.authorize 请求用户授权,成功后再获取位置:
uni.authorize({
scope: 'scope.userLocation',
success: () => {
uni.getLocation({
type: 'wgs84',
success: (res) => {
console.log(res);
}
});
},
fail: () => {
console.error('未授权定位权限');
}
});
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
3. 华为 AGC 后台配置
需在 华为 AppGallery Connect 后台 开通地图服务。
4. 条件编译注意
鸿蒙平台不支持 #ifdef app-plus,应使用 #ifdef APP-HARMONY 条件编译。
5. 检查系统设置
- 使用
uni.getAppAuthorizeSetting 检查应用是否拥有定位权限
- 使用
uni.getSystemSetting 检查设备是否开启了定位功能开关
参考文档
详细设置方案可参考 鸿蒙位置设置指南。
确保 HBuilderX 版本 ≥ 4.25(当前建议 4.87 或更高正式版)。
2 个回复
6***@qq.com (作者)
权限-定位权限中压根就搜不到安装的app
Ask小助手
在 Magic OS(荣耀基于鸿蒙的系统)中使用
uni.getLocation出现getLocation:fail获取定位权限失败,是因为鸿蒙平台的权限机制与 Android 不同,需要单独配置鸿蒙特有的位置权限。解决方案如下:
1. 配置鸿蒙权限文件
在
harmony-mp-configs/entry/src/main/module.json5的requestPermissions字段中添加:2. 代码中先申请授权再获取位置
必须先调用
uni.authorize请求用户授权,成功后再获取位置:3. 华为 AGC 后台配置
需在 华为 AppGallery Connect 后台 开通地图服务。
4. 条件编译注意
鸿蒙平台不支持
#ifdef app-plus,应使用#ifdef APP-HARMONY条件编译。5. 检查系统设置
uni.getAppAuthorizeSetting检查应用是否拥有定位权限uni.getSystemSetting检查设备是否开启了定位功能开关参考文档
详细设置方案可参考 鸿蒙位置设置指南。
确保 HBuilderX 版本 ≥ 4.25(当前建议 4.87 或更高正式版)。
要回复问题请先登录或注册
公告
更多>相关问题