這可能是使用最便捷的權(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),直到用戶授權(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)限沒有在清單文件中注冊(cè)會(huì)拋出異常
支持大部分國(guó)產(chǎn)手機(jī)直接跳轉(zhuǎn)到具體的權(quán)限設(shè)置頁(yè)面
可設(shè)置被拒絕后繼續(xù)申請(qǐng),直到用戶授權(quán)或者永久拒絕
支持請(qǐng)求6.0及以上的懸浮窗權(quán)限和8.0及以上的安裝權(quán)限
本框架不依賴AppCompatSupport庫(kù)刻帚,兼容Eclipse和Studio
混淆規(guī)則
-dontwarn com.hjq.permissions.**
常見問題
我們都知道潦嘶,如果用戶全部授予只會(huì)調(diào)用hasPermission方法,如果用戶全部拒絕只會(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集合類中的contains(Permission.XXX)方法來(lái)判斷這個(gè)集合中是否包含了這個(gè)權(quán)限冯勉。
來(lái)自一位小白用戶的心聲
雖然行為放蕩語(yǔ)言粗曠外表淫蕩,但是他的內(nèi)心摹芙,是純潔的