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机型上,蓝牙扫描需要同时满足以下条件:

  1. 位置服务开关:需要在系统设置中开启GPS或位置服务(不仅是应用权限)
  2. 位置权限:应用需要获取位置权限(ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION)

解决方案:

  1. 检查系统级位置服务

    • 进入手机设置 → 位置信息 → 开启位置服务
    • 部分机型可能需要额外开启“提高精确度”选项
  2. 权限配置检查: 在manifest.json中确保已声明位置权限:

    "permissions": {
      "android": {
        "permissions": [
          "android.permission.BLUETOOTH",
          "android.permission.BLUETOOTH_ADMIN", 
          "android.permission.ACCESS_FINE_LOCATION"
        ]
      }
    }
    
  3. 动态权限请求: 在调用蓝牙发现前,先请求位置权限:

    uni.authorize({
      scope: 'scope.location',
      success() {
        uni.startBluetoothDevicesDiscovery({...})
      }
    })
回到顶部