HarmonyOS 蓝牙权限申请与处理实战
在开发 HarmonyOS 应用时,经常会遇到权限申请后系统弹窗不出现的情况。本文将以蓝牙权限为例,复盘问题根因并提供完整的解决方案。
一、问题现象:消失的授权对话框
应用场景:用户点击'添加设备'按钮,应用需要申请 ohos.permission.ACCESS_BLUETOOTH 和 ohos.permission.USE_BLUETOOTH 权限以扫描周边设备。
代码实现:
import { abilityAccessCtrl, common } from '@kit.AbilityKit';
async function requestBluetoothPermissions(context: common.UIAbilityContext) {
let atManager = abilityAccessCtrl.createAtManager();
let needPermissions = ['ohos.permission.ACCESS_BLUETOOTH', 'ohos.permission.USE_BLUETOOTH'];
atManager.requestPermissionsFromUser(context, needPermissions, (err, data) => {
if (err) {
console.error(`申请权限失败:${JSON.stringify(err)}`);
} else {
console.info('权限申请回调数据:', JSON.stringify(data));
}
});
}
实际现象:点击按钮后,控制台打印了回调数据,但手机屏幕没有任何弹窗出现。手动检查设置发现 ACCESS_BLUETOOTH 状态为'拒绝',而 USE_BLUETOOTH 不在列表里。
二、背景知识:HarmonyOS 权限的'明暗'双轨制
并非所有在 module.json5 中声明的权限都会以相同方式向用户申请。
| 权限类型 | 英文术语 | 申请方式 | 用户感知 | 典型案例 |
|---|


