欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Android權限HaloPermission詳細使用

1. 常規(guī)使用

我們提供的服務有:成都網(wǎng)站設計、成都網(wǎng)站建設、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、冠縣ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的冠縣網(wǎng)站制作公司

請求一個權限,然后接收結(jié)果回調(diào)

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)
      .{省略代碼}

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

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)
            .{省略回調(diào)設置代碼}
            .setRationaleRender("為了確保功能的正常使用,請允許接下來的權限請求申請。")
            .run()

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

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
          .{省略回調(diào)設置代碼}
          .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í)行,你需要在適當?shù)臅r候調(diào)用process的`onNext`或`onCancel`方法**
              process.onNext()

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

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

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

3. SettingRender使用

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

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

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

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
          .{省略回調(diào)設置代碼}
          .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í)行,你需要在適當?shù)臅r候調(diào)用process的`onNext`或`onCancel`方法**
              process.onNext()

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

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

HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
          .{省略回調(diào)設置代碼}
          .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ī)則

兩步即可實現(xiàn)

   //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的形式去實現(xiàn),HaloPermission本身也提供了Fragment的請求方式,但是最終去掉了這部分的實現(xiàn),因為對于Fragment的使用機制,如果使用不當,可能會出現(xiàn)一些奇怪的問題,我想這是你我都不愿看到的。同樣的,兩步即可實現(xiàn)自定義請求方式

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

分享文章:Android權限HaloPermission詳細使用
分享URL:http://aaarwkj.com/article36/gpjisg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站策劃、標簽優(yōu)化、域名注冊靜態(tài)網(wǎng)站、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設網(wǎng)站維護公司
久久精品一区二区三区乱码| 黄色亚洲一区二区三区四区| 亚洲亚洲精品av在线动| 亚洲男人的天堂社区av| 国产黄色免费精品网站| 日日插天天干夜夜操| 日本高清不卡在线播放| 日本一区二区国产在线| 热久久精品只有这里有| 日本中文字幕在线播放一区| 亚洲乱色熟女一区二区三区麻豆| 99精品国产高清一区二区三区| 不卡一区二区黄色av| av小说亚洲激情乱| 91手机精品在线视频| 亚洲理论在线观看电影| 99久久久久国产精品免费| 丰满少妇一区二区三区专区| 丰满人妻二区三区性色| 日韩精品专区在线影院重磅| 亚洲天堂av福利在线观看| 精品欧美自拍偷拍三区| 九九热这里面只有精品| 亚洲精品一区二区三区不卡| 国产级一片内射视步页| 肥胖老熟女一区二区三区| 日本成人高清一区二区| 色哟哟亚洲精品在线视频| 亚洲黄色av在线免费观看| 在线激情av中文字幕| 亚洲精品老司机福利在线| 国产在线播放精品视频| 刚出嫁新婚少妇很紧很爽| 欧美黄片在线免费观看视频| 欧美艳星一区二区三区四区| 亚洲综合欧美日韩一区| 熟妇高潮一区二区在线观看| 日本少妇激情后入嗯啊| 久久热这里只有视频精品| 国产激情片午夜福利| 天天操天天夜夜操夜夜|