uni-app uni.getLocation在安卓OPPO手机上失效

uni-app uni.getLocation在安卓OPPO手机上失效

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

操作步骤:

1

预期结果:

1

实际结果:

1

bug描述:

oppo安卓机型的uni.getLocation获取定位失败,没有反应,oppo A11x,小米10,谷歌Nexus 6P。定位失效,使用hbuilder3.3.13和3.4.5均失效。三星S8能有反应。

4 回复

这个因为用的是谷歌定位,安卓机型需要把定位定到国外才能用,苹果不需要,安卓偶尔定在国内也能用,导致一直定在国内突然获取不到,改一下gps定位,海外能用。


使用3.4.5默认基座调试看看,建议使用高德定位

问题解决了嘛?

uni-app 中使用 uni.getLocation 时,如果在安卓 OPPO 手机上失效,可能是由于以下原因导致的。你可以按照以下步骤进行排查和解决:


1. 检查权限配置

  • AndroidManifest.xml 文件中需要添加定位权限:
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  • uni-app 项目中,权限配置通常会自动生成,但建议检查是否正确。

2. 动态申请权限

  • 在 Android 6.0 及以上版本中,定位权限需要动态申请。可以在代码中调用 uni.authorize 请求定位权限:
    uni.authorize({
      scope: 'scope.userLocation',
      success() {
        uni.getLocation({
          type: 'wgs84',
          success(res) {
            console.log('获取位置成功:', res);
          },
          fail(err) {
            console.error('获取位置失败:', err);
          }
        });
      },
      fail() {
        console.error('用户拒绝授权');
      }
    });

3. 检查 OPPO 手机的系统设置

  • OPPO 手机可能对定位权限有额外的限制。请检查以下设置:
    1. 进入 设置 > 权限管理 > 定位权限,确保应用已开启定位权限。
    2. 进入 设置 > 电池 > 应用耗电管理,找到你的应用,设置为 允许后台运行不优化
    3. 进入 设置 > 位置信息,确保定位功能已开启。

4. 检查高精度定位模式

  • 确保手机定位模式为 高精度模式(使用 GPS、Wi-Fi 和移动网络):
    1. 进入 设置 > 位置信息
    2. 选择 高精度模式

5. 调试代码

  • uni.getLocationfail 回调中打印错误信息,确认具体原因:
    uni.getLocation({
      type: 'wgs84',
      success(res) {
        console.log('获取位置成功:', res);
      },
      fail(err) {
        console.error('获取位置失败:', err);
      }
    });
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!