最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android權限HaloPermission詳細使用

 更新時間:2018年04月11日 11:02:59   作者:SupLuo  
這篇文章主要介紹了Android權限HaloPermission詳細使用,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1. 常規(guī)使用

請求一個權限,然后接收結果回調

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()

請求多個權限

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CALL_PHONE)
      .{省略代碼}
      
    //or
    
    val permissions:Array<String> = arrayOf("","")
    HoloPermission.with(this,*permissions)
      .{省略代碼}

只關心權限被允許(未被允許)的回調

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

      }).run()

2. RationaleRender使用

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

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

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

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

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

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

關于此回調的觸發(fā)說明:

  1. 如果app之前請求過該權限,被用戶拒絕, 這個方法回回調。
  2. 如果用戶之前拒絕權限的時候勾選了對話框中”Don't ask again”的選項,那么這個方法不會回調
  3. 如果設備策略禁止應用擁有這條權限, 這個方法也不會回調

3. SettingRender使用

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

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

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

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

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

              //onNext()表示繼續(xù)后面的執(zhí)行,HaloPermission將打開系統(tǒng)應用權限設置界面
              //onCancel會取消流程的執(zhí)行,不會打開系統(tǒng)應用權限設置界面,最終會回調onPermissionDenied方法
            }
          })
          .run()

如果你覺得HaloPermission打開的權限設置界面不是您所滿意的,你可以重寫SettingRender的getCustomSettingIntent方法提供一個Intent,如果返回null則將使用HaloPermission的默認方式打開:

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. 自定義權限校驗規(guī)則

兩步即可實現

   //1. 創(chuàng)建自定義PermissionChecker
    class CustomChecker:PermissionChecker{
      override fun isPermissionGranted(ctx: Context, permission: String): Boolean {
        {使用你的規(guī)則}
      }
    }
    
    //2. 使用自定義規(guī)則
    HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
      .{省略常規(guī)代碼}
      .run(CustomChecker())

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

5. 自定義請求方式

HaloPermission默認使用ShadowActivity的形式請求權限,當然只要你愿意,您可以使用Fragment的形式去實現,HaloPermission本身也提供了Fragment的請求方式,但是最終去掉了這部分的實現,因為對于Fragment的使用機制,如果使用不當,可能會出現一些奇怪的問題,我想這是你我都不愿看到的。同樣的,兩步即可實現自定義請求方式

    //1. 創(chuàng)建自定義PermissionCaller
    class CustomCaller: PermissionCaller{
       override fun requestPermission(ctx: Context, responder: PermissionResponder, vararg permision: String) {
         {可以仿造HaloPermission實現,最終要在適當的時候調用responder讓流程正常進行}
       }
    }
    
    //2. 使用自定義規(guī)則
    HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
      .{省略常規(guī)代碼}
      .run(CustomCaller())

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android 中從屏幕左下角彈出Dialog動畫效果的實現代碼

    Android 中從屏幕左下角彈出Dialog動畫效果的實現代碼

    這篇文章主要介紹了Android 中從屏幕左下角彈出Dialog動畫效果的實現代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • Android內存泄漏排查利器LeakCanary

    Android內存泄漏排查利器LeakCanary

    這篇文章主要為大家詳細介紹了Android內存泄漏排查利器LeakCanary的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android上傳文件到服務器的方法

    Android上傳文件到服務器的方法

    這篇文章主要為大家詳細介紹了Android上傳文件到服務器的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 解析Android應用啟動后自動創(chuàng)建桌面快捷方式的實現方法

    解析Android應用啟動后自動創(chuàng)建桌面快捷方式的實現方法

    和IOS開發(fā)和Windows Phone開發(fā)相比,Android是開放的,Android上的開發(fā)也相對更加靈活,能夠做很多事情。有的朋友會發(fā)現,在某些Android應用安裝以后,第一次運行,就會在桌面創(chuàng)建快捷方式。這是如何做到的呢
    2013-05-05
  • Android隱藏頂部狀態(tài)欄所遇到的問題

    Android隱藏頂部狀態(tài)欄所遇到的問題

    本文給大家分享兩種隱藏狀態(tài)欄的方法及在實現的過程中遇到的坑,下面在本文中給大家做個總結,希望對大家學習android頂部狀態(tài)欄知識有所幫助
    2016-11-11
  • Android開發(fā)中的MVC設計模式淺析

    Android開發(fā)中的MVC設計模式淺析

    這篇文章主要介紹了Android開發(fā)中的MVC設計模式淺析,本文講解了對Android開發(fā)中的MVC設計模式的理解,需要的朋友可以參考下
    2015-06-06
  • init output stream初始化輸出流源碼分析

    init output stream初始化輸出流源碼分析

    這篇文章主要為大家介紹了init output stream初始化輸出流源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Android中解決RecyclerView各種點擊事件的方法

    Android中解決RecyclerView各種點擊事件的方法

    這篇文章主要介紹了Android中解決RecyclerView各種點擊事件的方法,完美解決RecyclerView點擊事件、長按事件、子項點擊事件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android冷啟動優(yōu)化的3個小案例分享

    Android冷啟動優(yōu)化的3個小案例分享

    為了提高App的冷啟動耗時,除了在常規(guī)的業(yè)務側進行耗時代碼優(yōu)化之外,為了進一步縮短啟動耗時,需要在純技術測做一些優(yōu)化探索,本期我們從類預加載、Retrofit 、ARouter方面進行了進一步的優(yōu)化,感興趣的同學跟著小編一起來看看吧
    2023-07-07
  • Android Bitmap詳解及Bitmap的內存優(yōu)化

    Android Bitmap詳解及Bitmap的內存優(yōu)化

    這篇文章主要介紹了Android Bitmap詳解及Bitmap的內存優(yōu)化的相關資料,Bitmap是Android系統(tǒng)中的圖像處理的最重要類之一。用它可以獲取圖像文件信息,進行圖像剪切、旋轉、縮放等操作,并可以指定格式保存圖像文件,需要的朋友可以參考下
    2017-03-03

最新評論

丽江市| 广汉市| 沧源| 新邵县| 齐齐哈尔市| 永济市| 榆社县| 信宜市| 防城港市| 墨竹工卡县| 东莞市| 绿春县| 绥中县| 应城市| 红安县| 常州市| 黑河市| 杭锦后旗| 漠河县| 和政县| 岚皋县| 宝鸡市| 龙游县| 丰城市| 子长县| 渭南市| 承德市| 犍为县| 当涂县| 时尚| 衡阳县| 南康市| 凤翔县| 无极县| 双峰县| 牡丹江市| 合川市| 麟游县| 华宁县| 扶绥县| 十堰市|