HarmonyOS 鸿蒙Next access.enableBluetooth();开启蓝牙报错2900099
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,报错原因是什么?哪位大神指导下如何解决?
楼主您好!在蓝牙开启和关闭的时候您有设置判断条件吗?蓝牙这块的接口是不允许在开启的情况下调用enableBluetooth,关闭的时候调用disableBluetooth的。
需要做下类似下面代码的判断:
Button('开启蓝牙').onClick(() => {
if (access.getState() === 2) {
promptAction.showToast({message: '蓝牙已开启'});
return;
}
this.bluetooth.setBlueToothAccess(true);
})
在HarmonyOS鸿蒙系统中,调用access.enableBluetooth();
方法时遇到错误码2900099,通常指示蓝牙权限或状态配置问题。该错误码可能表示系统未能成功开启蓝牙功能,原因可能包括但不限于:
-
权限未正确声明:确保在
config.json
文件中已正确声明蓝牙相关权限,如ohos.permission.BLUETOOTH
和ohos.permission.BLUETOOTH_ADMIN
。 -
蓝牙状态异常:在调用开启蓝牙之前,检查当前蓝牙状态(可通过
access.checkBluetoothState()
)。如果蓝牙已处于开启状态,再次调用开启方法可能会引发异常。 -
系统策略限制:某些情况下,系统策略或用户设置可能阻止应用开启蓝牙。确保应用有权限执行此操作,且用户未在设备设置中禁用应用的蓝牙权限。
-
API使用不当:确认
access.enableBluetooth();
的调用符合API文档规范,包括参数传递和调用环境。
针对此错误,首先检查上述可能原因,并确保所有配置正确无误。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。这样可以获得更具体的技术支持和解决方案。