uni.getLocation(OBJECT),在鸿蒙next平台在已经打开系统定位的情况,第一次调用会正常弹出系统授权弹窗,授权之后正常获取经纬度.但是有几个问题
a.默认没有打开系统定位,就会定位失败,这时候怎么判断系统定位开关没有打开,并且引导用户打开呢.
b. 系统定位打开成功之后,用户拒绝权限,再次uni.getLocation是不会调起系统弹窗的,怎么判断是用户拒绝,并引导用户手打授予权限.

陌翊痕
- 发布:2025-07-02 15:01
- 更新:2025-07-02 19:23
- 阅读:100
陌翊痕 (作者)
这个api测试过,定位开关或者定位权限没授予 都会返回false.没办法区分是系统定位开关未打开还是用户拒绝了权限. const authorized = uni.getAppAuthorizeSetting()
if (authorized.locationAuthorized === 'authorized') {
console.log('------------------')
uni.getLocation({
type: 'wgs84',
success: function(res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
},
fail: (err) => {
console.log(err)
}
2025-07-03 09:43
DCloud_UNI_yuhe
回复 陌翊痕: 是哪个版本?是最新版的吗?
2025-07-03 10:44
陌翊痕 (作者)
回复 DCloud_UNI_yuhe: 关于本机HarmonyOS版本软件版本 5.0.15.0.1.120
运行内存 12GB存储
可用空间:220.02GB
总容量:256GB
屏幕 2412×1084
基带版本 21C30SPC303S000C00021C30SPC303S000C000HongMeng Kernel 1.9.5
内核版本HarmonyOS@ localhost #1 SMP FriMay 904:05:09 UTC 2025
API版本 5.0.5(17)OpenHarmony版本 OpenHarmony 5.0.1
参数版本安全补丁标签 2025/05/01
2025-07-03 11:19
DCloud_UNI_yuhe
回复 DCloud_UNI_yuhe: 是hbuilderx的版本,是最新的吗?另外你打印一下执行的结果看看是什么?
2025-07-03 14:55
陌翊痕 (作者)
回复 DCloud_UNI_yuhe: HBuilderX 4.66
const authorized = uni.getAppAuthorizeSetting()
console.log('locationAuthorized:',authorized.locationAuthorized) //打印显示locationAuthorized: denied .
//denied:未打开系统定位/已打开系统定位,首次uni.getAppAuthorizeSetting()/已打开系统定位,用户拒绝权限.
2025-07-03 16:57
DCloud_UNI_yuhe
回复 陌翊痕: 好的,等我看一下这个问题的
2025-07-03 17:01