权限
1、检查是否授权
export async function checkPermission(permission: Permissions): Promise<abilityAccessCtrl.GrantStatus>{
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager()
let grantStatus: abilityAccessCtrl.GrantStatus = abilityAccessCtrl.GrantStatus.PERMISSION_DENIED
try{
let bundleInfo = await bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
let appInfo = bundleInfo.appInfo
let tokenId: number = appInfo.accessTokenId
grantStatus = await atManager.checkAccessToken(tokenId, permission)
return grantStatus
} catch (e) {
return grantStatus
}
}
2、申请权限
export async function requestPermission(context: Context, permissionList: Array<Permissions>){
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager()
atManager.requestPermissionsFromUser(context, permissionList)
.then((data) => {
let grantStatus: Array<number> = data.authResults
showLog('授权结果--'+ toJsonStr(grantStatus))
}).catch((err: ErrorCode) => {
showLog('授权失败--'+ toJsonStr(err))
})
}
3、多个权限检查是否授权并申请授权
export function xPermission(context: Context, permissionList: Array<Permissions>): Promise<Array<Permissions>>{
return new Promise<Array<Permissions>>((resolve, reject) => {
let denieds: Array<Permissions> = []
let granteds: Array<Permissions> = []
try{
permissionList.forEach((item: Permissions) => {
checkPermission(item).then((data: abilityAccessCtrl.GrantStatus) => {
if(data != abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED){
denieds.push(item)
} else {
granteds.push(item)
}
if((denieds.length + granteds.length) == permissionList.length) resolve(denieds)
}).catch((err: ErrorCode) => {
showLog('xPermissions -- 异常='+JSON.stringify(err))
})
})
} catch (e) {
showLog('授权失败--'+JSON.stringify(e))
reject(e)
}
})
}
4、调用
let context = getContext(this) as common.UIAbilityContext
xPermission(context, ['ohos.permission.WRITE_MEDIA',
'ohos.permission.CAMERA',
'ohos.permission.ACCESS_BLUETOOTH',
'ohos.permission.LOCATION_IN_BACKGROUND',
'ohos.permission.LOCATION'])
.then(async (data: Array<Permissions>) => {
if(null!=data && data.length > 0){
showLog('xPermission -- =开始授权')
requestPermission(context, data)
}else {
showLog('xPermission -- 全部授权')
}
})
.catch((err: ErrorCode) => {
showLog('xPermission -- 授权失败')
})