更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com1。介绍一下soul-permission是一个权限组件,主要是检查和请求权限。方法级权限适配,FractionAbility和Fraction解耦,不再需要Context,不再需要onPermissionResult,支持特殊权限(Notification【通知】,SystemAlert【应用悬浮窗】,UNKNOW_SOURCE【未知源应用安装】,WRITE_SYS_SETTINGS【写入系统设置】])检查和请求。2.效果展示3.依赖关系(1)。在项目的build.gradle的allprojects中,添加Maven仓库地址repositories{maven{url'https://s01.oss.sonatype.org/content/repositories/releases/'}}(2)。在application模块的build.gradle的dependencies闭包中,添加如下代码:dependencies{implementation'io.github.dzsf:soul-permission:1.0.0'}4。使用说明(1)。一句话版本完成自动判断、权限检查、请求、后续操作:SoulPermission.getInstance().checkAndRequestPermission(SystemPermission.LOCATION,//ifyouwantdonotingornoneedallthecallbacksyoumayuseSimplePermissionAdapterinsteadnewCheckRequestPermissionListener(){@OverridepublicvoidonPermissionOk(Permissionpermission){Utils.showMessage(ApiGuideAbility.this,permission.toString()+"\nisok,youcandoyouroperations");}@OverridepublicvoidonPermissionDenied(Permissionpermission){Utils.showMessage(ApiGuideAbility.this,permission.toString()+"\nisrefused,youcannotdonextthings");}});(2).您还可以一次请求多个权限SoulPermission.getInstance().checkAndRequestPermissions(Permissions.build(SystemPermission.CAMERA,SystemPermission.WRITE_USER_STORAGE),//ifyouwantdonotingornoneedallthecallbacksyoumayuseSimplePermissionsAdapterinsteadnewCheckRequestPermissionsListener(){@OverridepublicvoidonAllPermissionOk(Permission[]allPermissions){Utils.showMessage(ApiGuideAbility.this,allPermissions.length+"permissionsisok"+"\nyoucandoyouroperations");}@OverridepublicvoidonPermissionDenied(Permission[]refusedPermissions){Utils.showMessage(ApiGuideAbility.this,refusedPermissions[0].toString()+"\nisrefused,youcannotdonextthings");}});(3)。包含shouldShowRequestPermissionRationale的情况SoulPermission.getInstance().checkAndRequestPermission(SystemPermission.READ_CONTACTS,newCheckRequestPermissionListener(){@OverridepublicvoidonPermissionOk(Permissionpermission){Utils.showMessage(ApiGuideAbility.this,permission.toString()+"\nisok,youcandoyouroperations");}OverridepublicvoidonPermissionDenied(Permissionpermission){//参见CheckPermissionWithRationaleAdapterif(permission.shouldRationale()){Utils.showMessage(ApiGuideAbility.this,permission.toString()+"\nyoushouldshowaexplainforuserthenretry");}else{Utils.showMessage(ApiGuideAbility.this,permission.toString()+"\nisrefused,youcannotdonextthings");}}});(4)。检查某个权限//你也可以使用checkPermissions()来获取一系列权限PermissioncheckResult=SoulPermission.getInstance().checkSinglePermission(SystemPermission.LOCATION);(5)。getInstance().checkSpecialPermission(Special.NOTIFICATION);(6)。检查并请求特殊权限[未知应用安装]//ifyouwantdonotingornoneedallthecallbacksyoumayuseSimpleSpecialPermissionAdapterinsteadSoulPermission.getInstance().checkAndRequestPermission(Special.UNKNOWN_APP_SOURCES,newSpecialPermissionListener(){@OverridepublicvoidonGranted(Specialpermission){Utils.showMessage(ApiGuideAbility.this,"installunKnownappisenablenow");}@OverridepublicvoidonDenied(特殊权限){Utils.showMessage(ApiGuideAbility.this,"installunKnownappisdisableyet");}});(7)。跳转到应用设置页面SoulPermission.getInstance().goApplicationSettings(data->{//ifyouneedtknowwhenbackfromappdetailUtils.showMessage(ApiGuideAbility.this,"backfromgoappDetail");});(8)。注意:SoulPermission内部使用contentProvider自动初始化。如果你的项目使用了可能通过替换Application方法导致SoulPermission内部初始化失败的框架(如Tinker、腾讯乐谷等),请手动在你的Application类中调用init即可(通过设置debug可以看到错误日志打印和相关的Toast)//调用initinyourapplicationwhenautoinitfailedpublicclassMyApplicationextendsAbilityPackage{@OverridepublicvoidonInitialize(){super.onInitialize();SoulPermission.setDebug(true);}}5.相关资料IDE官方下载地址:https://developer.harmonyos.com/cn/develop/deveco-studio更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com
