前言运行时权限是HarmonyOS安全体系的重要组成部分敏感权限需要用户明确授权。pura/harmony-utils的PermissionUtil封装了权限申请和查询方法简化了权限管理流程。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、PermissionUtil核心APIPermissionUtil提供了以下权限管理方法方法说明参数使用场景checkPermission(permission)检查权限状态string权限状态查询requestPermission(permission)请求权限string单个权限申请requestPermissions(permissions)批量请求权限string[]多权限申请1.1 核心特性简洁易用封装复杂API为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃批量支持支持单个和批量权限申请1.2 常见运行时权限权限说明类型ohos.permission.CAMERA相机user_grantohos.permission.LOCATION精确定位user_grantohos.permission.APPROXIMATELY_LOCATION粗略定位user_grantohos.permission.MICROPHONE麦克风user_grant二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 检查权限import{PermissionUtil}frompura/harmony-utils;Button(检查相机权限).width(100%).onClick((){try{letgrantedPermissionUtil.checkPermission(ohos.permission.CAMERA);this.result相机权限:${granted?已授权 ✅:未授权 ❌};}catch(e){this.result异常: e;}})2.3 请求权限Button(请求相机权限).width(100%).onClick(async(){try{letresultawaitPermissionUtil.requestPermission(ohos.permission.CAMERA);this.result请求结果:${result?已授权 ✅:被拒绝 ❌};}catch(e){this.result异常: e;}})三、完整页面示例import{PermissionUtil}frompura/harmony-utils;EntryComponentstruct PermissionDemo{Stateresult:string;build(){Column({space:12}){Button(检查位置权限).width(100%).onClick((){try{letgrantedPermissionUtil.checkPermission(ohos.permission.APPROXIMATELY_LOCATION);this.result位置权限:${granted?已授权:未授权};}catch(e){this.result异常: e;}});Button(请求位置权限).width(100%).onClick(async(){try{letresultawaitPermissionUtil.requestPermission(ohos.permission.APPROXIMATELY_LOCATION);this.result结果:${result?已授权:被拒绝};}catch(e){this.result异常: e;}});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 权限申请流程封装import{PermissionUtil,ToastUtil}frompura/harmony-utils;asyncfunctionensurePermission(permission:string):Promiseboolean{if(PermissionUtil.checkPermission(permission))returntrue;letresultawaitPermissionUtil.requestPermission(permission);if(!result){ToastUtil.showToast(需要权限才能使用此功能);}returnresult;}4.2 批量权限申请Button(申请多媒体权限).width(100%).onClick(async(){try{letresultsawaitPermissionUtil.requestPermissions([ohos.permission.CAMERA,ohos.permission.MICROPHONE]);this.result批量申请完成;}catch(e){this.result异常: e;}})五、注意事项权限声明需在module.json5中声明所需权限user_grant权限需要用户手动授权的权限必须使用运行时申请权限说明建议在请求前向用户说明权限用途初始化依赖使用前需确保AppUtil.init()已调用拒绝处理用户拒绝后应提供替代方案或引导设置六、常见问题Q1: 请求权限后总是被拒绝检查module.json5中是否声明了对应权限未声明的权限无法通过运行时申请获取。Q2: 用户拒绝后如何再次申请可以引导用户到系统设置中手动开启权限或使用AlertDialog说明权限用途后再次请求。Q3: checkPermission和requestPermission的区别checkPermission仅查询当前状态不弹窗requestPermission会弹出授权对话框。Q4: 批量申请权限时部分被拒绝怎么办requestPermissions会返回每个权限的授权结果开发者可以逐个检查并处理。总结PermissionUtil简化了HarmonyOS的运行时权限管理流程开发者可以轻松检查和请求权限。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理的权限管理既保障了用户隐私又确保了应用功能正常运行。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。