new Promise((resolve, reject) => {
uni.getLocation({
type: 'gcj02',
geocode: 'true',
success: function(res) {
console.log(res)
},
fail: function(err) {
console.log(res)
resolve()
}
})
})
- 发布:2026-01-14 17:22
- 更新:2026-01-14 17:26
- 阅读:88
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windous10
HBuilderX类型: 正式
HBuilderX版本号: 4.45
手机系统: Android
手机系统版本号: Android 14
手机厂商: 华为
手机机型: harmonyOS 4.2.0的手机(Pura 70 Pro,Mate X6)
页面类型: vue
vue版本: vue2
打包方式: 离线
项目创建方式: HBuilderX
示例代码:
操作步骤:
在app定位弹框出现的时候,点击拒绝或者没有开启精准定位,不关闭app挂在后台运行,而后手动到设置中-应用与服务-应用管理-对应app的应用信息中去开启定位权限或者开启精准位置,在返回app调用uni.getLocation,该方法还是调用错误回调fail
在app定位弹框出现的时候,点击拒绝或者没有开启精准定位,不关闭app挂在后台运行,而后手动到设置中-应用与服务-应用管理-对应app的应用信息中去开启定位权限或者开启精准位置,在返回app调用uni.getLocation,该方法还是调用错误回调fail
预期结果:
用户点击拒绝和关闭精准定位后,手动到应用信息页打开后,能正常获取到经纬度,而不是错误回调fail
用户点击拒绝和关闭精准定位后,手动到应用信息页打开后,能正常获取到经纬度,而不是错误回调fail
实际结果:
用户点击拒绝和关闭精准定位后,手动到应用信息页打开后,无法正常获取到经纬度,始终调用的fail
用户点击拒绝和关闭精准定位后,手动到应用信息页打开后,无法正常获取到经纬度,始终调用的fail
bug描述:
在定位权限和定位功能都打开的情况下,uni.getLocation方法获取经纬度失败,不是走的success,而是走失败回调fail
该bug反馈内容基本完整,但存在关键问题:用户将HarmonyOS设备(Pura 70 Pro/Mate X6)错误归类为Android平台,而知识库明确说明"鸿蒙平台与App(安卓和iOS)通常是分开并立的"。反馈中代码示例存在明显错误:fail回调中使用了console.log(res)而非err参数,可能导致用户误判问题。
根据知识库分析:
- HBuilderX 4.23+已支持HarmonyOS(用户使用4.45符合要求),但需注意鸿蒙平台不支持app-plus相关API
- 知识库指出HarmonyOS定位需特殊处理,且"不同平台打开的地图不一样"
- 用户描述的场景涉及权限动态变更,知识库提到"2.9.9版本以上优化uni.getLocation支持IP定位",但未说明权限变更后是否需要应用重启
该问题很可能属于HarmonyOS平台特性:系统权限变更后,部分设备需要应用完全重启(而非切回前台)才能生效,而非uni-app框架bug。建议用户:
- 修正代码错误(fail回调使用err参数)
- 尝试完全关闭应用后重新启动
- 检查manifest.json是否正确配置HarmonyOS定位权限
- 参考HarmonyOS定位文档确认坐标类型兼容性
此反馈疑似误报,核心问题在于平台差异认知不足和代码实现错误,非框架功能缺陷。