HarmonyOS 鸿蒙Next 封装检查是否授权及动态授权 打开系统设置方法
HarmonyOS 鸿蒙Next 封装检查是否授权及动态授权 打开系统设置方法
import { abilityAccessCtrl, bundleManager, common, Permissions } from ‘@kit.AbilityKit’;
class PermissionManager {
// 检查是否授权 checkPermissions(permissions: Permissions[]) { // 程序访问控制管理 const atManager = abilityAccessCtrl.createAtManager(); // 获取 bundle 信息 const bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION) // 提取 tokenID 标识 const tokenID = bundleInfo.appInfo.accessTokenId // 校验应用是否被授予权限 const authResults = permissions.map((item) => atManager.checkAccessTokenSync(tokenID, item)) // 返回是否已授权结果 return authResults.every(v => v === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) }
// 动态申请授权(首次弹窗申请) async requestPermissions(permissions: Permissions[]) { // 程序访问控制管理 const atManager = abilityAccessCtrl.createAtManager(); // 拉起弹框请求用户授权 const grantStatus = await atManager.requestPermissionsFromUser(getContext(), permissions) // 获取请求权限的结果 const isAuth = grantStatus.authResults.every(item => item === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) // 返回 Promise 授权结果 return isAuth ? Promise.resolve(true) : Promise.reject(false) }
// 打开系统设置的权限管理页(处理授权结果) openPermissionSettingsPage() { // 获取上下文 const context = getContext() as common.UIAbilityContext // 获取包信息 const bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION) // 打开系统设置页 context.startAbility({ bundleName: ‘com.huawei.hmos.settings’, abilityName: ‘com.huawei.hmos.settings.MainAbility’, uri: ‘application_info_entry’, parameters: { // 按照包名打开对应设置页 pushParams: bundleInfo.name } }) } }
export const permissionManager = new PermissionManager()
在HarmonyOS(鸿蒙Next)中,封装检查是否授权及动态授权打开系统设置的方法如下:
-
检查权限:使用
AbilityContext
的verifySelfPermission
方法检查当前应用是否已授予特定权限。例如:int result = context.verifySelfPermission("ohos.permission.CAMERA"); if (result == IBundleManager.PERMISSION_GRANTED) { // 已授权 } else { // 未授权 }
-
动态申请权限:使用
AbilityContext
的requestPermissionsFromUser
方法动态申请权限。例如:String[] permissions = {"ohos.permission.CAMERA"}; context.requestPermissionsFromUser(permissions, 0);
-
打开系统设置:使用
Intent
启动系统设置页面。例如:Intent intent = new Intent(); Operation operation = new Intent.OperationBuilder() .withAction("android.settings.APPLICATION_DETAILS_SETTINGS") .withUri(Uri.parse("package:" + context.getBundleName())) .build(); intent.setOperation(operation); context.startAbility(intent);
通过这些方法,可以检查权限状态、动态申请权限,并引导用户到系统设置进行权限管理。