效果圖
一直彈窗申請,直到授權(quán)
申請后被拒絕键闺,彈窗提示敷钾,可以取消
加入項目步驟:
- 根目錄下build.gradle添加
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- 主工程build.gradle the dependency
dependencies {
implementation 'com.github.tuyrt7:PermissionImpl:v1.0.2'
}
permission模塊:動態(tài)權(quán)限申請
- 鏈式調(diào)用怪嫌、輕量不依賴其他庫
- 可以activity/fragment申請(內(nèi)部創(chuàng)建fragment繼承自androidx.fragment.app.fragment)
- 動態(tài)設(shè)置是否彈窗提示(內(nèi)部默認顯示)
- 也可以自己處理拒絕權(quán)限后回調(diào)佑力,在.requestPermission(PermissionListener)红且,自己在回調(diào)中處理提示
- 當勾選不再提示后,默認顯示彈窗進入設(shè)置頁面開啟(未監(jiān)聽設(shè)置中是否開啟權(quán)限)
- 如果有必須取得的權(quán)限稿黍,可以設(shè)置.isRejectNoCancelDialog(true):監(jiān)聽彈窗取消按鈕后再次彈出窗口,直到獲得權(quán)限
- 適配8.0的系統(tǒng)彈窗崩哩,應(yīng)用內(nèi)安裝的特殊權(quán)限
使用方式
//聲明權(quán)限組
String[] per = new String[]{
Manifest.permission.CAMERA,
Manifest.permission.CALL_PHONE
};
//調(diào)用巡球,都是默認值
PermissionImpl.newPermission()
.fragment(this)
//.activity(this)
.permission(Permission.SYSTEM_ALERT_WINDOW)
.permission(Permission.REQUEST_INSTALL_PACKAGES)
//.permission(per)
.permission(Permission.WRITE_EXTERNAL_STORAGE)//add 權(quán)限
.isRejectDialog(true)//顯示拒絕彈窗
.isRejectNoCancelDialog(false)//取消后是否繼續(xù)彈窗
.isRejectWithNeverDialog(true)////顯示拒絕彈窗
.isEnterAppSetting(true)//進入應(yīng)用設(shè)置頁得的方式(false進入系統(tǒng)權(quán)限設(shè)置,適配各大廠商sdk--未測試邓嘹,測試過自己華為mate酣栈,發(fā)現(xiàn)設(shè)置true比較方便)
.requestPermission(new AdapterPermissionListener(){
@Override
public void onGranted() {
Log.d("Fragment", "獲取所有的權(quán)限");
Toast.makeText(getContext(), "Fragment 獲取所有的權(quán)限", Toast.LENGTH_SHORT).show();
}
});
//簡單使用
PermissionImpl.newPermission()
.activity(this)
.permission(per)
.requestPermission(new AdapterPermissionListener() {
@Override
public void onGranted() {
Toast.makeText(PermissionActivity.this, "所有權(quán)限都已授權(quán)", Toast.LENGTH_SHORT).show();
}
});