dcloudio / dcloudio/uni-app

小米 11 安卓 13 调用 startBluetoothDevicesDiscovery 出现 10016 错误码

Open
#5,915 0 comments 0 reactions 1 assignee Claimed by @ArrayDC View on GitHub
5plus Android
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('定位服务功能已开启')
}
},
})
}
```

![Image](https://github.com/user-attachments/assets/d82620ee-ded0-4e92-92ad-490a07de44cb)

### 重现步骤

概率性问题,论坛上也是说普遍在安卓 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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.