HarmonyOS 鸿蒙Next 蓝牙扫描设备必须要MANAGE_BLUETOOTH权限吗?

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 蓝牙扫描设备必须要MANAGE_BLUETOOTH权限吗?

https://blog.51cto.com/harmonyos/6205722

按照这篇教程,做蓝牙设备扫描,发现教程中,声明了MANAGE_BLUETOOTH这个权限,但是一旦声明了这个权限,就会出现Failure[MSG_ERR_INSTALL_GRANT_REQUEST_PERMISSIONS_FAILED]不能安装的问题。查了相关资料,是因为这个权限是ACL权限,需要到应用商店进行一系列的复杂申请等一天才能使用,可是我只是写一个技术验证demo,就要申请应用商店吗?

另外,我选择忽略这个权限,不去声明,同样无法扫描。出现了这样的错误:startBLEScan ERROR= Error: BussinessError 401: Invalid parameter.

代码如下,请问问题出在哪里?蓝牙的相关文档真的是太难找了,只能来论坛求助了。

import bluetooth from '@ohos.bluetoothManager';

const TAG = "Index-ets"

@Entry
@Component
struct Index {

  @State message: string = 'Hello World'

  async aboutToAppear() {
    console.log(TAG, "aboutToAppear ")
    bluetooth.BLE.on("BLEDeviceFind", (result) => {
      console.log(TAG, "aboutToAppear BLEDeviceFind result=", result)
    })
    try {
      bluetooth.BLE.startBLEScan(
        [
          {
            deviceId: null,
            name: "HONOR 20 PRO",
            serviceUuid: null
          }
        ],
        {
          interval: 0,
          dutyMode: bluetooth.ScanDuty.SCAN_MODE_BALANCED,
          matchMode: bluetooth.MatchMode.MATCH_MODE_STICKY
        }
      )
    } catch (e) {
      console.error(TAG, "aboutToAppear startBLEScan ERROR=", e)
    }
  }

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Button('Ble', { type: ButtonType.Normal, stateEffect: true })
          .padding(8)
          .onClick(() => {
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
9 回复
不需要MANAGE_BLUETOOTH也能蓝牙扫描

请问不申请 MANAGE_BLUETOOTH 权限是怎么扫描的?

对,申请ACL后,列表里根本没这个权限 MANAGE_BLUETOOTH 。

可以提供更多信息吗?是api设计暂时不支持,还是什么其他原因?

你在应用商店申请一下ACL就知道了,列表里根本没这个权限。

上面的代码是在什么环境下 编译,构建的?

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

编译错误并不会出现,Failure[MSG_ERR_INSTALL_GRANT_REQUEST_PERMISSIONS_FAILED]这个错误是因为声明了Manage_bluetooth权限,这是一个system_basic权限,需要一些额外的处理。 我这里的问题是,如果不声明这个权限,执行bluetooth.BLE.startBLEScan时,会出现BussinessError 401: Invalid parameter错误

HarmonyOS进行蓝牙扫描设备时,不一定需要MANAGE_BLUETOOTH权限。实际上,蓝牙扫描通常需要的是如ACCESS_BLUETOOTH、BLUETOOTH、BLUETOOTH_ADMIN等权限,这些权限用于访问蓝牙功能和设备信息。MANAGE_BLUETOOTH权限可能涉及更高层次的蓝牙管理操作,不是常规蓝牙扫描所必需的。

确保在项目的配置文件中(如config.json或AndroidManifest.xml)正确声明了所需的蓝牙权限。如果问题依旧没法解决,请加我微信,我的微信是itying888。

回到顶部