小米 11 安卓 13 调用 startBluetoothDevicesDiscovery 出现 10016 错误码
- Dominant language
- JavaScript
- Stars
- 41.6k
- Forks
- 3.7k
- Avg merge
- 7h 6m
- Merged PRs (30d)
- 6
Description
### 发行方式
App
### 具体平台
小米 11、安卓 13 版本
### 开发环境
macOS
### 项目创建方式
CLI命令行
### Vue 版本
vue3
### 依赖版本
"@dcloudio/uni-app": "3.0.0-4080720251210001",
"@dcloudio/uni-app-harmony": "3.0.0-4080720251210001",
"@dcloudio/uni-app-plus": "3.0.0-4080720251210001",
"@dcloudio/uni-components": "3.0.0-4080720251210001",
"@dcloudio/uni-h5": "3.0.0-4080720251210001",
"@dcloudio/uni-mp-alipay": "3.0.0-4080720251210001",
"@dcloudio/uni-mp-baidu": "3.0.0-4080720251210001",
"@dcloudio/uni-mp-harmony": "3.0.0-4080720251210001",
"@dcloudio/uni-mp-jd": "3.0.0-4080720251210001",
"@dcloudio/uni-mp-kuaishou": "3.0.0-4080720251210001",
"@dcloudio/uni-mp-lark": "3.0.0-4080720251210001",
"@dcloudio/uni-mp-qq": "3.0.0-4080720251210001",
"@dcloudio/uni-mp-toutiao": "3.0.0-4080720251210001",
"@dcloudio/uni-mp-weixin": "3.0.0-4080720251210001",
"@dcloudio/uni-mp-xhs": "3.0.0-4080720251210001",
"@dcloudio/uni-quickapp-webview": "3.0.0-4080720251210001",
"@dcloudio/types": "^3.4.8",
"@dcloudio/uni-automator": "3.0.0-4080720251210001",
"@dcloudio/uni-cli-shared": "3.0.0-4080720251210001",
"@dcloudio/uni-stacktracey": "3.0.0-4080720251210001",
"@dcloudio/uni-uts-v1": "3.0.0-4080520251106001",
"@dcloudio/vite-plugin-uni": "3.0.0-4080720251210001",
### 问题描述
小米 11、安卓 13 版本概率出现:调用 startBluetoothDevicesDiscovery 出现 10016 错误码。
```
{"errMsg":"startBluetoothDevicesDiscovery:fail Location services are turned off","code":10016} , at composables/useBluetooth.ts:84
```
```
uni.startBluetoothDevicesDiscovery({
allowDuplicatesKey: true,
success: () => {
// 业务代码省略....
},
fail: (err) => {
// 这一步抛出的异常
console.error('[useBluetooth] 开始搜索蓝牙设备失败:', err)
isSearching.value = false
reject(err)
},
})
```
需要调用 如下代码开启 GPS 才能获取蓝牙,但是这很明显是不对的,调用蓝牙不需要获取 GPS 权限吧,只需要uni.getAppAuthorizeSetting() 获取蓝牙和普通位置权限就行。
```
let context = plus.android.importClass('android.content.Context')
let locationManager = plus.android.importClass('android.location.LocationManager')
let main = plus.android.runtimeMainActivity()
let mainSvr = main.getSystemService(context.LOCATION_SERVICE)
console.log('[useBluetooth] 定位服务状态:', mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER))
if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
uni.showModal({
title: '提示',
content: '搜索蓝牙设备需要开启定位服务功能',
showCancel: false,
confirmText: '去开启',
success() {
if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
let Intent = plus.android.importClass('android.content.Intent')
let Settings = plus.android.importClass('android.provider.Settings')
let intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
main.startActivity(intent) // 打开系统设置定位服务功能页面
}
else {
console.log('定位服务功能已开启')
}
},
})
}
```

### 重现步骤
概率性问题,论坛上也是说普遍在安卓 12、13、14 概率性出现。
https://ask.dcloud.net.cn/question/215247
https://ask.dcloud.net.cn/question/210624
https://ask.dcloud.net.cn/article/42262
### 期望行为
_No response_
### 实际行为
_No response_
### 截图或录屏
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.