本文介绍,鸿蒙应用开发时, 应用启动时的权限申请和 未获得的权限的再次申请:
直接上代码
启动时的申请
代码示例
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager()
await atManager.requestPermissionsFromUser(this.context, ['ohos.permission.MICROPHONE','ohos.permission.MEDIA_LOCATION']).then((data) => {
hilog.info(DOMAIN, 'testTag', 'requestPermissionsFromUser success');
}).catch((error:BusinessError)=> {
hilog.error(DOMAIN, 'testTag', 'Failed to set colorMode. Cause: %{public}s', JSON.stringify(error));
})
再次申请
(应用启动时,用户拒绝了app的权限申请,那么就需要在使用到相应权限时,对该权限进行再次申请) 这里up封装了一个鸿蒙的ets文件
代码:
import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
/**
* 权限检查和申请函数
* @param permissions 需要申请的权限
* @param context UIAbility上下文
* @param CallBack 回调函数,返回权限申请结果
*/
export function PermissionCheckAndApplication(
permissions: Permissions,
context: common.UIAbilityContext,
CallBack: (result: boolean) => void
): void {
// 创建权限管理器实例
const atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
// 请求用户授权指定权限
atManager.requestPermissionsFromUser(context, [permissions]).then((data) => {
// 获取授权结果状态数组
let grantStatus: Array<number> = data.authResults;
console.info(`data.authResults: ${data}`);
// 判断权限是否被拒绝
if (grantStatus[0] == abilityAccessCtrl.GrantStatus.PERMISSION_DENIED) {
// 没有相应权限,回调返回false
CallBack(false);
// 引导用户到设置页面手动授权麦克风权限
atManager.requestPermissionOnSetting(context, ['ohos.permission.MICROPHONE'])
.then((data: Array<abilityAccessCtrl.GrantStatus>) => {
console.info(`requestPermissionOnSetting success, result: ${data}`);
})
.catch((err: BusinessError) => {
console.error(`requestPermissionOnSetting fail, code: ${err.code}, message: ${err.message}`);
});
} else {
// 权限已授权,回调返回true
CallBack(true);
}
}).catch((err: BusinessError) => {
// 权限请求过程出现错误
console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
});
}
小伙伴们可以创建自己的工具文件夹使用
使用
代码
Button('申请权限')
.onClick(()=> {
const context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
PermissionCheckAndApplication('ohos.permission.MICROPHONE',context,(result:boolean)=>{
if(result){
console.info('是否有权限:是')
}else{
console.info('是否有权限:否')
}
});
})
谢谢大家观看,点个赞哦!!!!!!!!