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定位权限和调用频率问题。以下是关键点分析:
- 错误码分析:
- 错误码12表示"缺少定位权限",但您已确认权限已开启
- 这种情况通常是由于高德定位SDK的调用频率限制导致的
- 主要原因:
- 高德定位SDK对连续调用有限制(约1秒1次)
- 多次快速调用会导致SDK内部状态异常
- 离线打包可能使用了不同的SDK版本或配置
- 解决方案:
// 添加调用间隔控制
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);
}
});
}