(廢棄)簡單對權限開源庫進行功能性封裝

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 好看一點,沒想到代碼會爆炸這么多,這個真是仁者見仁,智者見智的事,我覺得代碼封裝就是為了方便大家,最簡單的一般來說都是比較好的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。