鸿蒙开发中权限如果设置成功,怎么通知到应用呢?

鸿蒙开发中权限如果设置成功,怎么通知到应用呢,在非 UI 的类中如何操作,因为我是封装了一个权限管理器,有没有类似的回调之类的?

阅读 259
1 个回答

你可以使用检测用户是否获取权限,具体示例代码如下:

//首先检测用户权限需要先获取Token,token是异步回调的 
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl'; 
async accessToken(permission: Permissions): Promise<abilityAccessCtrl.GrantStatus> { 
  let atManager = abilityAccessCtrl.createAtManager() 
  let grantStatus: abilityAccessCtrl.GrantStatus 
 
  let tokenID: number 
  try { 
  let bundleInfo = await bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION) 
  tokenID = bundleInfo.appInfo.accessTokenId 
} catch (err) { 
  console.log('location 获取地理位置token失败') 
} 
 
try { 
  grantStatus = await atManager.checkAccessToken(tokenID,permission) 
} catch (err) { 
  console.log('获取地理位置token检测失败') 
} 
 
return grantStatus 
} 
//其次获取token后,开始查询用户权限状态 
async checkPermission() { 
 
  let permissions: Array<Permissions> = ['ohos.permission.LOCATION','ohos.permission.APPROXIMATELY_LOCATION'] 
  let locationStatus = await this.accessToken(permissions[0]) 
  let roximateyStatus = await this.accessToken(permissions[1]) 
  if (locationStatus == abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED && 
    roximateyStatus == abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) { 
    console.log('location 已经申请完权限了') 
  } else { 
    console.log('location 需要申请权限') 
    this.requestPermission() 
  } 
}