(废弃)简单对权限开源库进行功能性封装

ps : 这是最早的文章,由新的权限组件文章

话说相同的开源库总是有一些的,不唯一,权限管理也是如此,我们可以选择 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 有兴趣的自己去搞搞,原理都是一样的

demo 地址:BW_PermissionDemo

最后

写完代码之后我是沮丧的,感觉就是简单的写了半遍 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 好看一点,没想到代码会爆炸这么多,这个真是仁者见仁,智者见智的事,我觉得代码封装就是为了方便大家,最简单的一般来说都是比较好的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。