HarmonyNote.TOP鸿蒙开发笔记

鸿蒙应用用户授权检测

在鸿蒙应用开发过程中,有很多操作是需要先向用户申请授权的,比如麦克风和相机,要录音和拍照片,需要用户同意授权才能操作。还有另一种情况,可能用户先是同意授权,过了一段时间后又手动取消授权了。这就需要一个检测用户是否授权的方法了。于是我封装了一个方法,示例代码如下:

public static async checkPermission() {
  try {
    const manager = abilityAccessCtrl.createAtManager() 
    const buildInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
    const status = manager.checkAccessTokenSync(buildInfo.appInfo?.accessTokenId, "ohos.permission.MICROPHONE")
    if (status === abilityAccessCtrl.GrantStatus.PERMISSION_DENIED) {
      // 没有获得授权
    } else {
      // 已获得授权
    }
  } catch (error) {
      console.log(error)
  }
}

然而编辑器始终报错如下:

Property 'getBundleInfoForSelfSync' does not exist on type 'typeof bundleManager'. <ArkTSCheck>

也就是说bundleManager上没有getBundleInfoForSelfSync这个方法,不思不得其解,于AI交流也没发现问题所在,最后点击bundleManager进去查看源码才发现是从错误的@kit.MDMKit包下引入bundleManager,正确的应该是在@kit.AbilityKit报下。

import { bundleManager } from "@kit.MDMKit";   // 错误
import { bundleManager  } from '@kit.AbilityKit'   // 正确