一句代碼搞定權(quán)限請(qǐng)求,從未如此簡(jiǎn)單

這可能是使用最便捷的權(quán)限請(qǐng)求框架

Github傳送地址,歡迎Star

另外想對(duì)Android 6.0權(quán)限需要深入了解的,可以看這篇文章Android 6.0運(yùn)行權(quán)限解析

集成步驟

dependencies {
    implementation 'com.hjq:xxpermissions:5.2'
}

一句代碼搞定權(quán)限請(qǐng)求,從未如此簡(jiǎn)單

點(diǎn)此查看完整的示例代碼

XXPermissions.with(this)
        //.constantRequest() //可設(shè)置被拒絕后繼續(xù)申請(qǐng),直到用戶(hù)授權(quán)或者永久拒絕
        //.permission(Permission.SYSTEM_ALERT_WINDOW, Permission.REQUEST_INSTALL_PACKAGES) //支持請(qǐng)求6.0懸浮窗權(quán)限8.0請(qǐng)求安裝權(quán)限
        .permission(Permission.Group.STORAGE, Permission.Group.CALENDAR) //不指定權(quán)限則自動(dòng)獲取清單中的危險(xiǎn)權(quán)限
        .request(new OnPermission() {

            @Override
            public void hasPermission(List<String> granted, boolean isAll) {
                
            }

            @Override
            public void noPermission(List<String> denied, boolean quick) {
                
            }
        });

是否有這個(gè)權(quán)限

if (XXPermissions.isHasPermission(this, Permission.Group.STORAGE)) {
    
}

跳轉(zhuǎn)到設(shè)置頁(yè)面

XXPermissions.gotoPermissionSettings(this);

框架亮點(diǎn)

  • 簡(jiǎn)潔易用,采用鏈?zhǔn)秸{(diào)用的方式,使用只需一句代碼

  • 支持單個(gè)權(quán)限、多個(gè)權(quán)限、單個(gè)權(quán)限組、多個(gè)權(quán)限組請(qǐng)求

  • 不指定權(quán)限則自動(dòng)獲取清單文件上的危險(xiǎn)權(quán)限進(jìn)行申請(qǐng)

  • 如果動(dòng)態(tài)申請(qǐng)的權(quán)限沒(méi)有在清單文件中注冊(cè)會(huì)拋出異常

  • 支持大部分國(guó)產(chǎn)手機(jī)直接跳轉(zhuǎn)到具體的權(quán)限設(shè)置頁(yè)面

  • 可設(shè)置被拒絕后繼續(xù)申請(qǐng),直到用戶(hù)授權(quán)或者永久拒絕

  • 支持請(qǐng)求6.0及以上的懸浮窗權(quán)限和8.0及以上的安裝權(quán)限

  • 本框架不依賴(lài)AppCompatSupport庫(kù),兼容Eclipse和Studio

混淆規(guī)則

-dontwarn com.hjq.permissions.**

常見(jiàn)問(wèn)題

我們都知道,如果用戶(hù)全部授予只會(huì)調(diào)用hasPermission方法,如果用戶(hù)全部拒絕只會(huì)調(diào)用noPermission方法。

但是還有一種情況,如果在請(qǐng)求多種權(quán)限的情況下,這些權(quán)限不是被全部授予或者全部拒絕了,而是部分授權(quán)部分拒絕這種情況,框架會(huì)如何處理回調(diào)呢?

框架會(huì)先調(diào)用noPermission方法,再調(diào)用hasPermission方法。其中我們可以通過(guò)hasPermission方法中的isAll參數(shù)來(lái)判斷權(quán)限是否全部授予了。如果想知道回調(diào)中的某個(gè)權(quán)限是否被授權(quán)或者拒絕,可以調(diào)用List集合類(lèi)中的contains(Permission.XXX)方法來(lái)判斷這個(gè)集合中是否包含了這個(gè)權(quán)限。

來(lái)自一位小白用戶(hù)的心聲

雖然行為放蕩語(yǔ)言粗曠外表淫蕩,但是他的內(nèi)心,是純潔的

Android 技術(shù)討論 Q 群:10047167

最后記得點(diǎn)贊 + Star

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,724評(píng)論 25 709
  • 用到的組件 1、通過(guò)CocoaPods安裝 2、第三方類(lèi)庫(kù)安裝 3、第三方服務(wù) 友盟社會(huì)化分享組件 友盟用戶(hù)反饋 ...
    SunnyLeong閱讀 15,134評(píng)論 1 180
  • 高山 隱去了陽(yáng)光 路燈 在黑夜里畫(huà)了條長(zhǎng)廊 寒風(fēng) 驅(qū)散燈光 灑滿(mǎn)了整個(gè)街道 挺拔的樹(shù) 伸長(zhǎng)了枝干 想要抓住落葉 樹(shù)...
    又一林閱讀 214評(píng)論 1 2
  • 問(wèn)題,怎樣即堅(jiān)持自我,又不把別人趕走?讓一切流經(jīng)我的內(nèi)心? 見(jiàn),一個(gè)小男孩在臺(tái)上唱歌,跑調(diào)實(shí)在太離譜,...
    米睿媽媽閱讀 467評(píng)論 1 1
  • 我最?lèi)?ài)的人叫路藝,其次是寶貝你 昨晚發(fā)生的一切不是我在做夢(mèng)吧?我真的好害怕發(fā)生的一切只是自己做了一個(gè)夢(mèng)...
    阿旋閱讀 259評(píng)論 2 1

友情鏈接更多精彩內(nèi)容