android多次调用uni-app的uni.getLocation返回fail

android多次调用uni-app的uni.getLocation返回fail

### 表格信息
| 信息类别     | 内容           |
|--------------|----------------|
| 产品分类     | uniapp/App     |
| PC开发环境操作系统 | Mac            |
| PC开发环境操作系统版本号 | 12.6.1         |
| HBuilderX类型 | 正式           |
| HBuilderX版本号 | 3.99           |
| 手机系统     | Android        |
| 手机系统版本号 | Android 13     |
| 手机厂商     | vivo           |
| 手机机型     | X70            |
| 页面类型     | nvue           |
| vue版本      | vue2           |
| 打包方式     | 离线           |
| 项目创建方式 | HBuilderX      |

### Markdown 文档

#### 操作步骤:
android手机多次调用,就会出现图片错误信息

#### 预期结果:
正确返回定位信息

#### 实际结果:
```json
{
    "errMsg": "getLocation:fail[geolocation:12]缺少定位权限 请到http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode/查看错误码说明,错误详细信息:#pm111011",   
    "errCode": 1,   
    "code": 1  
}

bug描述:

android手机,页面多次调用uni.getLocation,会返回fail,具体信息见图片。

添加了解析地址信息参数,geocode: true

检查了手机权限,系统定位和应用定位权限都是正常打开状态。

还有个疑惑,真机调试没问题,离线打包后就会有问题,这是什么原因~


更多关于android多次调用uni-app的uni.getLocation返回fail的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

调用一次没问题?

更多关于android多次调用uni-app的uni.getLocation返回fail的实战教程也可以访问 https://www.itying.com/category-93-b0.html


对,前几次调用没问题,多点几次就有问题了,然后一直就这个报错。 定位权限关掉重新打开,就又好了。

回复 舒克5251: 拆一个简单的示例吧,我这边试一下

根据您描述的情况,这是一个典型的Android定位权限和调用频率问题。以下是关键点分析:

  1. 错误码分析:
  • 错误码12表示"缺少定位权限",但您已确认权限已开启
  • 这种情况通常是由于高德定位SDK的调用频率限制导致的
  1. 主要原因:
  • 高德定位SDK对连续调用有限制(约1秒1次)
  • 多次快速调用会导致SDK内部状态异常
  • 离线打包可能使用了不同的SDK版本或配置
  1. 解决方案:
// 添加调用间隔控制
let isLocating = false;
function getLocation() {
    if(isLocating) return;
    isLocating = true;
    
    uni.getLocation({
        type: 'gcj02',
        geocode: true,
        success() {
            isLocating = false;
        },
        fail(err) {
            console.error(err);
            setTimeout(() => {
                isLocating = false;
            }, 1000);
        }
    });
}
回到顶部