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