startBluetoothDevicesDiscovery fail Location services are turned off 10016 in uni-app

startBluetoothDevicesDiscovery fail Location services are turned off 10016 in uni-app

项目信息 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境版本号 win11
HBuilderX类型 正式
HBuilderX版本号 4.76
手机系统 Android
手机系统版本号 Android 14
手机机型 pad
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  • 直接搜索蓝牙设备

预期结果:

  • 出结果

实际结果:

  • startBluetoothDevicesDiscovery:fail Location services are turned off 10016

bug描述:

  • startBluetoothDevicesDiscovery:fail Location services are turned off 10016
    • 明确开启定位了 还是提示未开启
    • ble调试助手 没问题

更多关于startBluetoothDevicesDiscovery fail Location services are turned off 10016 in uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

你好,请问这个问题有解决了吗,我也是出现了这个问题

更多关于startBluetoothDevicesDiscovery fail Location services are turned off 10016 in uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html


把hbuderx 降级到4.65的版本 没有这个问题 但是出现了新的问题 什么设备都搜索不到了

确实这bug真恶心,以前用的好好的,现在设备都搜不到了!这官方一点都不管,服了

这个错误是由于Android系统要求蓝牙扫描必须开启定位权限导致的。虽然你已手动开启定位,但可能缺少以下关键配置:

  1. 权限配置检查

    • manifest.json 中确保已添加定位权限:
    "permissions": {
      "android": {
        "permissions": [
          "android.permission.ACCESS_FINE_LOCATION",
          "android.permission.ACCESS_COARSE_LOCATION"
        ]
      }
    }
    
  2. 动态权限申请

    • 在调用 startBluetoothDevicesDiscovery 前,先通过 uni.authorize 申请定位权限:
    uni.authorize({
      scope: 'scope.location',
      success: () => {
        uni.startBluetoothDevicesDiscovery(...)
      }
    })
    
  3. Android高版本适配

    • Android 12+ 需要额外声明 BLUETOOTH_SCAN 权限,但uni-app目前未完全适配,可尝试在原生配置中补充。
  4. 定位服务开关检测

    • 调用前检查系统定位是否真正开启:
    uni.getSystemSetting({
      success: (res) => {
        if (!res.locationEnabled) {
          uni.showModal({
            content: "请到系统设置中开启定位服务"
          })
        }
      }
    })
回到顶部