uni-app 安卓端未在page.json配置tabBar导航时 位置相关API uni.chooseLocation和uni.openLocation调用报错且未进入API回调函数

uni-app 安卓端未在page.json配置tabBar导航时 位置相关API uni.chooseLocation和uni.openLocation调用报错且未进入API回调函数

14 回复

大概排查了一下,报错并非来自框架,而是来自项目内的代码:

更多关于uni-app 安卓端未在page.json配置tabBar导航时 位置相关API uni.chooseLocation和uni.openLocation调用报错且未进入API回调函数的实战教程也可以访问 https://www.itying.com/category-93-b0.html


感谢~

回复 itmonkey: 刚又编辑了一下

回复 DCloud_UNI_GSQ: 恩恩,知道啥原因了,感谢!

请问解决了吗?

更新到最新的正式版试试

不行的,目前还没找到错误原因,app使用chooseLocation需要额外配置什么东西么,地图也配置了啊

新建个工程,看能复现问题吗,如果能,上传工程,我来排查一下

回复 itmonkey: 操作步骤说一下

回复 DCloud_UNI_GSQ: app,运行到手机,然后在个人中心-设置-地址管理-添加收货地址-点击定位当前地点。 这里用的是chooseLocation,其他端可以调起地图,app端报下面图片的错误信息。

报错信息如下

在uni-app安卓端未配置tabBar时调用位置相关API报错的问题,通常是由于权限配置或API调用方式不当导致的。以下是关键点:

  1. 权限配置问题:
  • 确保manifest.json中已添加定位权限:
"permission": {
  "scope.userLocation": {
    "desc": "需要获取您的位置信息"
  }
}
  1. API调用时机:
  • 建议在onLoad或用户交互事件中调用,避免过早调用
  • 检查是否在页面生命周期前调用API
  1. 回调未执行的可能原因:
  • 未处理用户拒绝授权的情况
  • 设备GPS未开启
  • 未捕获API调用异常
  1. 解决方案:
// 推荐调用方式
uni.getSetting({
  success(res) {
    if (!res.authSetting['scope.userLocation']) {
      uni.authorize({
        scope: 'scope.userLocation',
        success() {
          callLocationAPI();
        }
      });
    } else {
      callLocationAPI();
    }
  }
});

function callLocationAPI() {
  uni.chooseLocation({
    success: (res) => {
      console.log('位置选择成功', res);
    },
    fail: (err) => {
      console.error('位置选择失败', err);
    }
  });
}
回到顶部