HarmonyOS 无法拉起蓝牙权限设置弹框?

1、先调用requestPermissionsFromUser请求授权,唤起授权弹窗后点击禁止按钮。

2、再次调用requestPermissionOnSetting无反应,也没报错信息。

阅读 569
1 个回答

参考示例如下:

import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

function requestPermission(context: common.UIAbilityContext,
  permissionResult: (allow: boolean) => void): void {
  let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
  // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
  let permissions: Array<Permissions> = ['ohos.permission.ACCESS_BLUETOOTH'];
  atManager.requestPermissionsFromUser(context, permissions).then((data) => {
    let grantStatus: Array<number> = data.authResults;
    let length: number = grantStatus.length;
    for (let i = 0; i < length; i++) {
      if (grantStatus[i] === 0) {
        // 用户授权,可以继续访问目标操作
        permissionResult(true);
      } else {
        // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
        permissionResult(false);
        return;
      }
    }
    // 授权成功
  }).catch((err: BusinessError) => {
    permissionResult(false);
    console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
  })
}

function requestNextPermission(context: common.UIAbilityContext,
  permissionResult: (allow: boolean) => void): void {
  let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
    atManager.requestPermissionOnSetting(context, ['ohos.permission.ACCESS_BLUETOOTH'])
    .then((data: Array<abilityAccessCtrl.GrantStatus>) => {
      console.info('data:' + JSON.stringify(data));
    })
    .catch((err: BusinessError) => {
      console.error('data:' + JSON.stringify(err));
    });
}

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  aboutToAppear(): void {
    // requestMicrophonePermission(getContext(this) as common.UIAbilityContext, () => {
    // });
  }

  build() {
    Row() {
      Column() {
        Button('一次授权').onClick(() => {
          console.log('xxx')
          requestPermission(getContext(this) as common.UIAbilityContext, () => {
          });
        })
        Button('二次授权').onClick(() => {
          console.log('xxx')
          requestNextPermission(getContext(this) as common.UIAbilityContext, () => {
          });
        })
      }
      .height('100%')
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进