您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页简单对权限开源库进行功能性封装

简单对权限开源库进行功能性封装

来源:二三四教育网

话说相同的开源库总是有一些的,不唯一,权限管理也是如此,我们可以选择 AndPermission,RxPermission 等,那么我们常见的需求出现一个了,未来如何在切换开源库时不影响我们的业务代码吗,要达到一处崔改,处处适用的效果呢

这里就要求我们对这些开源库进行二次封装了,这里我简单的封装了一下,看看 api

 btn_permission.setOnClickListener(v -> {

            PermissionComponent.with(this)
                    .permissin(Manifest.permission.CAMERA)
                    .onSuccess(() -> show("成功!"))
                    .onDenial(() -> show("失败!"))
                    .onDontShow(() -> {
                        //  打开权限管理页面
                        PermissionComponent.startSettingActivity(MainActivity.this, 200);
                    })
                    .run();
        });

支持 activity,fragment,content,这个支持几种需要看我们里买使用的什么开源库了。提供了3个回调,给权限,拒绝权限,不再显示权限弹窗的回调,提供了打开权限设置页的功能。切换底层开源库的方法都懒没写。

代码很简单,就是很繁琐,我简单说一下


Snip20180420_11.png
  • contentSource 维护不同的上下文类型
  • executer 维护的不同的具体的开源库
  • action 是针对3种回调的抽象接口
  • permissioncontain 保存全部的所需的参数
  • PermissionComponent 是暴露给外层使用的工具累
  • PermissinManage 是具体的业务实现类

这个例子里面,我只是实现了 AndPermission 的集成,RxPermission 有兴趣的自己去搞搞,原理都是一样的

最后

写完代码之后我是沮丧的,感觉就是简单的写了半遍 AndPermission,其实可以写的很简单的

 public static void requestPermission( Activity activity,Action success,Action denial,Action dontShow,String... permissions ){...}

    public static void requestPermission( Fragment fragment,Action success,Action denial,Action dontShow,String... permissions ){...}

    public static void requestPermission( Context context,Action success,Action denial,Action dontShow,String... permissions ){...}

就像这样就行了, 我当时也是为了想要 API 好看一点,没想到代码会爆炸这么多,这个真是仁者见仁,智者见智的事,我觉得代码封装就是为了方便大家,最简单的一般来说都是比较好的。

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务