uni-app 更新HBX后 运行到安卓基座总是getLocation:fail 获取定位权限失败

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app 更新HBX后 运行到安卓基座总是getLocation:fail 获取定位权限失败

开发环境 版本号 项目创建方式
Windows 11 HBuilderX

操作步骤:

uni.getLocation({
type: 'wgs84',
isHighAccuracy: true, //开启高精度定位
success(res) {
console.log('4-----',res);
},
fail: r => {
console.log('获取定位失败', r);
}
})

预期结果:

获取定位正常

实际结果:

获取定位权限失败,直接进入fail

bug描述:

更新HBX后,运行到安卓基座总是getLocation:fail 获取定位权限失败。更新之前获取定位都是正常的。请排查下。


2 回复

一样这个问题,配了高德的key也一直报错,后发现安卓13可以,安卓11一直报错


在 uni-app 中,如果你在更新 HBuilderX(HBX)后,运行到安卓基座时遇到 getLocation:fail 获取定位权限失败 的问题,可能是由于以下原因导致的。你可以按照以下步骤进行排查和解决:

1. 检查权限配置

确保在 manifest.json 文件中已经正确配置了定位权限。在 manifest.jsonapp-plus 节点下,添加以下权限配置:

"app-plus": {
  "distribute": {
    "android": {
      "permissions": [
        "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
        "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>"
      ]
    }
  }
}

2. 动态申请权限

在 Android 6.0 及以上版本,应用需要在运行时动态申请权限。你可以在 App.vue 或相关页面中添加代码来动态申请定位权限:

// 在页面中动态申请权限
uni.authorize({
  scope: 'scope.userLocation',
  success() {
    console.log('定位权限已授权');
  },
  fail() {
    console.log('定位权限未授权');
    uni.showModal({
      title: '提示',
      content: '需要获取定位权限,请前往设置开启',
      success(res) {
        if (res.confirm) {
          uni.openSetting();
        }
      }
    });
  }
});

3. 检查基座版本

确保你使用的是最新的基座版本。你可以尝试重新安装基座,或者使用自定义基座来测试。

4. 检查设备设置

在安卓设备上,确保已经开启了定位服务,并且应用已经获得了定位权限。你可以在设备的设置中检查应用的权限设置。

5. 检查 HBuilderX 版本

确保你使用的是最新版本的 HBuilderX。有时,旧版本的 HBuilderX 可能存在一些兼容性问题,更新到最新版本可能会解决这些问题。

6. 检查代码逻辑

确保你的代码逻辑没有问题,特别是在调用 uni.getLocation 方法时,确保在获取定位之前已经获得了权限。

uni.getLocation({
  type: 'wgs84',
  success(res) {
    console.log('获取位置成功', res);
  },
  fail(err) {
    console.log('获取位置失败', err);
  }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!