這可能是使用最便捷的權(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)單
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
