startBluetoothDevicesDiscovery fail Location services are turned off in uni-app
startBluetoothDevicesDiscovery fail Location services are turned off in uni-app
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | windows11 | HBuilderX |
示例代码:
uni.startBluetoothDevicesDiscovery({
success(res) {
// console.log(res)
},
fail(err) {
console.log(err)
}
});
操作步骤:
- 手机调试,调用方法后报错,位置和权限都已经开启
预期结果:
- 成功查询到蓝牙列表
实际结果:
- 代码报错
{
"errMsg": "startBluetoothDevicesDiscovery:fail Location services are turned off",
"errCode": 10016,
"code": 10016
}
4.6之前的编译器云打包是可以的,升级了编译器之后,大部分机型都可以搜索到蓝牙,只有少部分机型会报错误
bug描述:
{
"errMsg": "startBluetoothDevicesDiscovery:fail Location services are turned off",
"errCode": 10016,
"code": 10016
}
更多关于startBluetoothDevicesDiscovery fail Location services are turned off in uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html
4 回复
我也遇到一样的问题,啥办法都没有!使用苹果手机就一点问题都没有,真是无语
更多关于startBluetoothDevicesDiscovery fail Location services are turned off in uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html
安卓手机要把定位打开才能搜索
回复 hengsen: 定位当然是打开的,就是莫名其妙
这个错误提示表明系统检测到位置服务被关闭。虽然您提到已经开启了位置权限,但在某些Android机型上,蓝牙扫描需要同时满足以下条件:
- 位置服务开关:需要在系统设置中开启GPS或位置服务(不仅是应用权限)
- 位置权限:应用需要获取位置权限(ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION)
解决方案:
-
检查系统级位置服务:
- 进入手机设置 → 位置信息 → 开启位置服务
- 部分机型可能需要额外开启“提高精确度”选项
-
权限配置检查: 在manifest.json中确保已声明位置权限:
"permissions": { "android": { "permissions": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.ACCESS_FINE_LOCATION" ] } } -
动态权限请求: 在调用蓝牙发现前,先请求位置权限:
uni.authorize({ scope: 'scope.location', success() { uni.startBluetoothDevicesDiscovery({...}) } })

