欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Android 權限-HaloPermission 詳細介紹

作者:SupLuo
鏈接:https://www.jianshu.com/p/047a0bf24d42
聲明:本文是 SupLuo 原創(chuàng )投稿,轉發(fā)等請聯(lián)系原作者授權。

An Android permission library developed by Kotlin language with higher extensibility and compatibility.

Kotlin語(yǔ)言開(kāi)發(fā)的Android權限庫,具有更高的擴展性和兼容性。

寫(xiě)在前面的

Android 運行時(shí)權限,想必對Android開(kāi)發(fā)者來(lái)說(shuō)并不陌生,Github上也有不少相應的庫也足夠應付現在的使用了,但是HaloPermission不是在無(wú)聊的造輪子,它的職責是讓自己提供的支持更完美,更能夠擁抱變化。
其實(shí)Halo是一個(gè)系列,里面的每一個(gè)庫我都會(huì )用心,盡自己所能的去寫(xiě)好,我也希望大家能給予更多的支持,共同建設,讓Android開(kāi)發(fā)閃射自己的Halo.
在開(kāi)發(fā)HaloPermission之前,我閱讀了很多文章,也看過(guò)很多庫的源碼,所以感謝這些偉大的無(wú)私奉獻者和開(kāi)源庫作者,其中包括RxPermission,HiPermission,EasyPermission,AndPermission等。

為什么是HaloPermission

  • 作者的出發(fā)點(diǎn)(一個(gè)對事情要求完美的處女座特點(diǎn))

  • 基于Kotlin(雙刃劍,仁者見(jiàn)仁,智者見(jiàn)智)

  • 更多的擴展性(后面會(huì )寫(xiě)文章專(zhuān)門(mén)介紹HoloPermission的設計)

  • 更多的兼容性(盡量兼容);

  • 更靈活的功能配置

使用介紹

1. 常規使用

  • 請求一個(gè)權限,然后接收結果回調

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
           .setListener(object: PermissionListener{
               override fun onPermissionDenied(permissions: List<String>) {
                   {your code for deny}
               }
               override fun onPermissionGrand(permissions: List<String>) {
                   {your code for grand}
               }
           }).run()
  • 請求多個(gè)權限

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CALL_PHONE)
           .{省略代碼}

       //or

       val permissions:Array<String> = arrayOf("","")
       HoloPermission.with(this,*permissions)
           .{省略代碼}
  • 只關(guān)心權限被允許(未被允許)的回調

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
           .setGrandAction(object:GrandAction{
               override fun onPermissionGrand(permissions: List<String>) {
                   {your code for grand}
               }

           }).run()

2. RationaleRender使用

如果你想向用戶(hù)解釋請求權限的原因,你可以使用setRationaleRender方法

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
                   .{省略回調設置代碼}
                   .setRationaleRender("為了確保功能的正常使用,請允許接下來(lái)的權限請求申請。")
                   .run()

如果你想自定義RationaleRender的樣式,比如:

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
               .{省略回調設置代碼}
               .setRationaleRender(object:RationaleRender{
                   override fun show(ctx: Context, permission: List<String>, process: RationaleRender.Process) {
                       //自定義使用了一個(gè)`Toast`展示信息。
                       Toast.makeText(ctx,"為了確保功能的正常使用,請允許接下來(lái)的權限請求申請。",Toast.LENGTH_SHORT).show()

                       //**為了確保后續的流程繼續執行,你需要在適當的時(shí)候調用process的`onNext`或`onCancel`方法**
                       process.onNext()

                       //onNext()表示繼續后面的執行
                       //onCancel會(huì )取消流程的執行,并且會(huì )最終回調onPermissionDenied方法
                   }
               })
               .run()

3. SettingRender使用

對于無(wú)法獲取權限時(shí),如果你想引導用戶(hù)打開(kāi)權限設置界面,你可以使用setSettingRender方法

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
             .{省略回調設置代碼}
             .setSettingRender("無(wú)法使用外部存儲,請設置權限以便使用。")
             .run()

如果你想自定義SettingRender的樣式,比如:

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
               .{省略回調設置代碼}
               .setSettingRender(object:SettingRender{
                   override fun show(ctx: Context, permission: List<String>, process: SettingRender.Process) {
                       //自定義使用了一個(gè)`Toast`展示信息。
                       Toast.makeText(ctx,"無(wú)法使用外部存儲,請設置權限以便使用。",Toast.LENGTH_SHORT).show()

                       //**為了確保后續的流程繼續執行,你需要在適當的時(shí)候調用process的`onNext`或`onCancel`方法**
                       process.onNext()

                       //onNext()表示繼續后面的執行,HaloPermission將打開(kāi)系統應用權限設置界面
                       //onCancel會(huì )取消流程的執行,不會(huì )打開(kāi)系統應用權限設置界面,最終會(huì )回調onPermissionDenied方法
                   }
               })
               .run()

如果你覺(jué)得HaloPermission打開(kāi)的權限設置界面不是您所滿(mǎn)意的,你可以重寫(xiě)SettingRendergetCustomSettingIntent方法提供一個(gè)Intent,如果返回null則將使用HaloPermission的默認方式打開(kāi):

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
               .{省略回調設置代碼}
               .setSettingRender(object:SettingRender{
                   override fun show(ctx: Context, permission: List<String>, process: SettingRender.Process) {
                      {省略的代碼}
                   }

                   //自定義SettingIntent
                   override fun getCustomSettingIntent(ctx: Context): Intent? {
                                           return super.getCustomSettingIntent(ctx)
                   }
               })
               .run()

4. 自定義權限校驗規則

兩步即可實(shí)現

   //1. 創(chuàng )建自定義PermissionChecker
  class CustomChecker:PermissionChecker{
       override fun isPermissionGranted(ctx: Context, permission: String): Boolean {
           {使用你的規則}
       }
   }

   //2. 使用自定義規則
   HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
      .{省略常規代碼}
      .run(CustomChecker())

除非你非常有把握,否則不建議使用自定義權限校驗規則,因為HaloPermission會(huì )盡可能的去適配和兼容

5. 自定義請求方式

HaloPermission 默認使用 ShadowActivity 的形式請求權限,當然只要你愿意,您可以使用 Fragment 的形式去實(shí)現,HaloPermission 本身也提供了
Fragment 的請求方式,但是最終去掉了這部分的實(shí)現,因為對于 Fragment 的使用機制,如果使用不當,可能會(huì )出現一些奇怪的問(wèn)題,我想這是你我都不愿看到的。

同樣的,兩步即可實(shí)現自定義請求方式

   //1. 創(chuàng )建自定義PermissionCaller
  class CustomCaller: PermissionCaller{
         override fun requestPermission(ctx: Context, responder: PermissionResponder, vararg permision: String) {
             {可以仿造HaloPermission實(shí)現,最終要在適當的時(shí)候調用responder讓流程正常進(jìn)行}
         }
  }

   //2. 使用自定義規則
   HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
      .{省略常規代碼}
      .run(CustomCaller())

實(shí)際運行效果截圖

熟話(huà)說(shuō)無(wú)圖無(wú)真相,由于常規請求的效果圖比較單調,這里只貼了設置了RationaleRender和SettingRender的效果截圖:

  • 包含SettingRender的效果

  • 包含RationaleRender的效果

更多請見(jiàn) Github

https://github.com/SupLuo/HaloPermission

kotlin 相關(guān)

使用 Kotlin 實(shí)現自定義 LayoutManager + ItemTouchHelper 實(shí)現炫酷卡片布局


打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Android: requires android.permission.READ
Android 6.0藍牙權限問(wèn)題
Android權限申請的學(xué)習實(shí)踐
目前最流行的運行時(shí)權限請求框架PermissionsDispatcher、RxPermissions和easypermissions的使用和對比
適配Android10 拍照,相冊,裁剪,上傳圖片
Exported service does not require permission警告
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久