鸿蒙开源三方组件(soul-permission)--权限检查、请求

系统
soul-permission是一个权限组件,主要对权限的检查及请求。WRITE_SYS_SETTINGS[写入系统设置])的检查与请求。

[[414377]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

1. 介绍

soul-permission是一个权限组件,主要对权限的检查及请求。方法级权限适配、解耦FractionAbility和Fraction、不再需要Context、不再需要onPermissionResult,支持特殊权限(Notification[通知]、SystemAlert[应用悬浮窗]、UNKNOW_SOURCE[未知来源应用安装]、

WRITE_SYS_SETTINGS[写入系统设置])的检查与请求。

2. 效果展示

 

3. 依赖

(1). 在工程的build.gradle的allprojects中,添加HAR所在的Maven仓地址

  1. repositories { 
  2.     maven { 
  3.         url 'https://s01.oss.sonatype.org/content/repositories/releases/' 
  4.     } 

(2). 在应用模块的build.gradle的dependencies闭包中,添加如下代码:

  1. dependencies { 
  2.         implementation 'io.github.dzsf:soul-permission:1.0.0' 
  3.     } 

4. 使用说明

(1). 一句话版本完成自动判断、权限检查、请求、后续操作:

  1. SoulPermission.getInstance().checkAndRequestPermission(SystemPermission.LOCATION, 
  2.         //if you want do noting or no need all the callbacks you may use SimplePermissionAdapter instead 
  3.         new CheckRequestPermissionListener() { 
  4.             @Override 
  5.             public void onPermissionOk(Permission permission) { 
  6.                 Utils.showMessage(ApiGuideAbility.this, permission.toString() + "\n is ok , you can do your operations"); 
  7.             } 
  8.  
  9.             @Override 
  10.             public void onPermissionDenied(Permission permission) { 
  11.                 Utils.showMessage(ApiGuideAbility.this, permission.toString() + " \n is refused , you can not do next things"); 
  12.             } 
  13.         }); 

 (2). 也可以一次请求多项权限

  1. SoulPermission.getInstance().checkAndRequestPermissions( 
  2.            Permissions.build(SystemPermission.CAMERA, SystemPermission.WRITE_USER_STORAGE), 
  3.            //if you want do noting or no need all the callbacks you may use SimplePermissionsAdapter instead 
  4.            new CheckRequestPermissionsListener() { 
  5.                @Override 
  6.                public void onAllPermissionOk(Permission[] allPermissions) { 
  7.                    Utils.showMessage(ApiGuideAbility.this, allPermissions.length + "permissions is ok" + " \n  you can do your operations"); 
  8.                } 
  9.  
  10.                @Override 
  11.                public void onPermissionDenied(Permission[] refusedPermissions) { 
  12.                    Utils.showMessage(ApiGuideAbility.this, refusedPermissions[0].toString() + " \n is refused , you can not do next things"); 
  13.                } 
  14.            }); 

 (3). 包含shouldShowRequestPermissionRationale的情形

  1. SoulPermission.getInstance().checkAndRequestPermission(SystemPermission.READ_CONTACTS, 
  2.           new CheckRequestPermissionListener() { 
  3.               @Override 
  4.               public void onPermissionOk(Permission permission) { 
  5.                   Utils.showMessage(ApiGuideAbility.this, permission.toString() + "\n is ok , you can do your operations"); 
  6.               } 
  7.  
  8.               @Override 
  9.               public void onPermissionDenied(Permission permission) { 
  10.                   // see CheckPermissionWithRationaleAdapter 
  11.                   if (permission.shouldRationale()) { 
  12.                       Utils.showMessage(ApiGuideAbility.this, permission.toString() + " \n you should show a explain for user then retry "); 
  13.                   } else { 
  14.                       Utils.showMessage(ApiGuideAbility.this, permission.toString() + " \n is refused , you can not do next things"); 
  15.                   } 
  16.               } 
  17.           }); 

 (4). 检查某项权限

  1. //you can also use checkPermissions() for a series of permissions 
  2.   Permission checkResult = SoulPermission.getInstance().checkSinglePermission(SystemPermission.LOCATION); 

(5). 检查特殊权限[通知权限]

  1. boolean checkResult = SoulPermission.getInstance().checkSpecialPermission(Special.NOTIFICATION); 

 (6). 检查并请求特殊权限[未知应用安装]

  1. //if you want do noting or no need all the callbacks you may use SimpleSpecialPermissionAdapter instead 
  2.   SoulPermission.getInstance().checkAndRequestPermission(Special.UNKNOWN_APP_SOURCES, new SpecialPermissionListener() { 
  3.               @Override 
  4.               public void onGranted(Special permission) { 
  5.                   Utils.showMessage(ApiGuideAbility.this, "install unKnown app  is enable now "); 
  6.               } 
  7.  
  8.               @Override 
  9.               public void onDenied(Special permission) { 
  10.                   Utils.showMessage(ApiGuideAbility.this, "install unKnown app  is disable yet"); 
  11.               } 
  12.           }); 

 (7). 跳转到应用设置页

  1. SoulPermission.getInstance().goApplicationSettings(data -> { 
  2.            //if you need to know when back from app detail 
  3.            Utils.showMessage(ApiGuideAbility.this, "back from go appDetail"); 
  4.        }); 

 (8). 注意事项:

  1. SoulPermission内部使用contentProvider自动初始化, 
  2.    如果你项目中使用了通过替换Application方式从而可能会导致SoulPermission内部初始化失败的框架(如Tinker,腾讯乐固等), 
  3.    请手动在你的Application类中调用init即可(通过设置debug,可以看到错误日志打印和相关Toast)。 
  4.    // invoke init in your application when auto init failed 
  5.    public class MyApplication extends AbilityPackage { 
  6.     
  7.        @Override 
  8.        public void onInitialize() { 
  9.            super.onInitialize(); 
  10.            SoulPermission.setDebug(true); 
  11.        } 
  12.    } 

5. 相关资料

IDE官方下载地址:https://developer.harmonyos.com/cn/develop/deveco-studio

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-08-02 14:54:50

鸿蒙HarmonyOS应用

2021-08-09 10:24:49

鸿蒙HarmonyOS应用

2021-08-03 12:47:58

鸿蒙HarmonyOS应用

2021-03-24 09:30:49

鸿蒙HarmonyOS应用

2021-04-28 15:07:06

鸿蒙HarmonyOS应用

2021-04-29 14:32:24

鸿蒙HarmonyOS应用

2021-03-10 15:03:40

鸿蒙HarmonyOS应用

2021-03-01 14:00:11

鸿蒙HarmonyOS应用

2021-08-03 10:07:41

鸿蒙HarmonyOS应用

2021-04-28 09:56:44

鸿蒙HarmonyOS应用

2021-08-26 16:07:46

鸿蒙HarmonyOS应用

2021-08-04 14:16:41

鸿蒙HarmonyOS应用

2021-04-20 15:06:42

鸿蒙HarmonyOS应用

2021-07-06 18:21:31

鸿蒙HarmonyOS应用

2021-08-30 17:55:58

鸿蒙HarmonyOS应用

2021-04-08 14:57:52

鸿蒙HarmonyOS应用

2021-08-05 15:06:30

鸿蒙HarmonyOS应用

2021-03-03 09:42:26

鸿蒙HarmonyOS图片裁剪

2021-11-02 14:54:21

鸿蒙HarmonyOS应用

2021-07-20 15:20:40

鸿蒙HarmonyOS应用
点赞
收藏

51CTO技术栈公众号