HarmonyOS 鸿蒙Next access.enableBluetooth();开启蓝牙报错2900099

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next access.enableBluetooth();开启蓝牙报错2900099

import { access } from ‘@kit.ConnectivityKit’;
import { BusinessError } from ‘@kit.BasicServicesKit’;

export class BlueToothMgr {

private static mBlueToothMgr: BlueToothMgr | undefined = undefined;

// public Ins(){
// if(BlueToothMgr.mBlueToothMgr){
// BlueToothMgr.mBlueToothMgr = new BlueToothMgr();
// }
// return BlueToothMgr.mBlueToothMgr;
// }
// 将 Ins 方法定义为静态方法
public static Ins() {
if (!BlueToothMgr.mBlueToothMgr) {
BlueToothMgr.mBlueToothMgr = new BlueToothMgr();
}
return BlueToothMgr.mBlueToothMgr;
}

// STATE_OFF 0 表示蓝牙已关闭。
// STATE_TURNING_ON 1 表示蓝牙正在打开。
// STATE_ON 2 表示蓝牙已打开。
// STATE_TURNING_OFF 3 表示蓝牙正在关闭。
// STATE_BLE_TURNING_ON 4 表示蓝牙正在打开LE-only模式。
// STATE_BLE_ON 5 表示蓝牙正处于LE-only模式。
// STATE_BLE_TURNING_OFF 6 表示蓝牙正在关闭LE-only模式。

/**
* 设置蓝牙访问(开关状态)
* @param isAccess true: 打开蓝牙
*/
setBlueToothAccess(isAccess: boolean){
try {
if(isAccess){
access.enableBluetooth();
access.on(‘stateChange’, (data: access.BluetoothState) => {
let btStateMessage = this.switchState(data);
if (btStateMessage == ‘STATE_ON’) {
access.off(‘stateChange’);
}
console.info('bluetooth statues: ’ + btStateMessage);
})
}else{
access.disableBluetooth();
access.on(‘stateChange’, (data: access.BluetoothState) => {
let btStateMessage = this.switchState(data);
if (btStateMessage == ‘STATE_OFF’) {
access.off(‘stateChange’);
}
console.info("bluetooth statues: " + btStateMessage);
})
}
} catch (err) {
console.error('errCode: ’ + (err as BusinessError).code + ', errMessage: ’ + (err as BusinessError).message);
}
}

private switchState(data: access.BluetoothState){
let btStateMessage = ‘’;
switch (data) {
case 0:
btStateMessage += ‘STATE_OFF’;
break;
case 1:
btStateMessage += ‘STATE_TURNING_ON’;
break;
case 2:
btStateMessage += ‘STATE_ON’;
break;
case 3:
btStateMessage += ‘STATE_TURNING_OFF’;
break;
case 4:
btStateMessage += ‘STATE_BLE_TURNING_ON’;
break;
case 5:
btStateMessage += ‘STATE_BLE_ON’;
break;
case 6:
btStateMessage += ‘STATE_BLE_TURNING_OFF’;
break;
default:
btStateMessage += ‘unknown status’;
break;
}
return btStateMessage;
}
}

开启和关闭蓝牙时都会报错2900099,报错原因是什么?哪位大神指导下如何解决?

2 回复

楼主您好!在蓝牙开启和关闭的时候您有设置判断条件吗?蓝牙这块的接口是不允许在开启的情况下调用enableBluetooth,关闭的时候调用disableBluetooth的。

需要做下类似下面代码的判断:

Button('开启蓝牙').onClick(() => {
if (access.getState() === 2) {
promptAction.showToast({message: '蓝牙已开启'});
return;
}
this.bluetooth.setBlueToothAccess(true);
})

在HarmonyOS鸿蒙系统中,调用access.enableBluetooth();方法时遇到错误码2900099,通常指示蓝牙权限或状态配置问题。该错误码可能表示系统未能成功开启蓝牙功能,原因可能包括但不限于:

  1. 权限未正确声明:确保在config.json文件中已正确声明蓝牙相关权限,如ohos.permission.BLUETOOTHohos.permission.BLUETOOTH_ADMIN

  2. 蓝牙状态异常:在调用开启蓝牙之前,检查当前蓝牙状态(可通过access.checkBluetoothState())。如果蓝牙已处于开启状态,再次调用开启方法可能会引发异常。

  3. 系统策略限制:某些情况下,系统策略或用户设置可能阻止应用开启蓝牙。确保应用有权限执行此操作,且用户未在设备设置中禁用应用的蓝牙权限。

  4. API使用不当:确认access.enableBluetooth();的调用符合API文档规范,包括参数传递和调用环境。

针对此错误,首先检查上述可能原因,并确保所有配置正确无误。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。这样可以获得更具体的技术支持和解决方案。

回到顶部