android动态权限封装,Android 动态权限申请的封装
此模塊基于AndPermission進(jìn)行二次封裝
為AndPermission加入依賴
implementation 'com.yanzhenjie:permission:2.0.3' //添加依賴
1
封裝類CheckPermission
public class CheckPermission {
private? Context context;
private static CheckPermission checkPermission;
private static final String PACKAGE_HEADER = "package:";
public? CheckPermission(Context context) {
this.context = context;
}
鄭州不孕不育醫(yī)院那家好:http://jbk.39.net/yiyuanfengcai/tsyl_zztjyy/1449/
/**
* 獲取權(quán)限
*
* @param listener
* @param permission
*/
@SuppressLint("WrongConstant")
public void requestPermission(String [] permission,final PermissionLinstener listener) {
AndPermission.with(context)
.runtime()
.permission(permission)
//? ? ? ? ? ? ? ? ? ? .rationale(context)//添加拒絕權(quán)限回調(diào)
.onGranted(new Action>() {
@Override
public void onAction(List data) {
// data.get(0);
Log.d("permission", data.get(0));
listener.onSuccess(context,data);
}
})
.onDenied(new Action>() {
@Override
public void onAction(List data) {
/**
* 當(dāng)用戶沒有允許該權(quán)限時(shí),回調(diào)該方法
*/
listener.onFailed(context,data);
/**
* 判斷用戶是否點(diǎn)擊了禁止后不再詢問,AndPermission.hasAlwaysDeniedPermission(MainActivity.this, data)
* 如要引導(dǎo)用戶跳轉(zhuǎn)至應(yīng)該權(quán)限設(shè)置頁面,可用intent
*/
if (AndPermission.hasAlwaysDeniedPermission(context, data)) {
//true,彈窗再次向用戶索取權(quán)限
listener.onNotApply(context,data);
}
}
}).start();
}
/**
* 引導(dǎo)用戶到系統(tǒng)設(shè)置頁面
*/
public void GuidePermission(){
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse(PACKAGE_HEADER + context.getPackageName()));
context.startActivity(intent);
}
鄭州好的不孕不育醫(yī)院有哪些:http://www.xbzztj.com/
public interface PermissionLinstener {
void onSuccess(Context context,List data);
void onFailed(Context context,List data);
void onNotApply(Context context,List data);
}
}
使用案例
final String [] strings = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE};
new CheckPermission(context).requestPermission(strings, new CheckPermission.PermissionLinstener() {
@Override
public void onSuccess(Context context, List data) {
Toast.makeText(context, "申請(qǐng)成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailed(Context context, List data) {
Toast.makeText(context, "申請(qǐng)失敗", Toast.LENGTH_SHORT).show();
}
/**
*? 可在此調(diào)用,GuidePermission();引導(dǎo)用戶前往系統(tǒng)設(shè)置頁面獲取權(quán)限
* @param context
* @param data
*/
@Override
public void onNotApply(final Context context, List data) {
Toast.makeText(context, "用戶點(diǎn)擊了不再提示", Toast.LENGTH_SHORT).show();
}
});
不要忘了在清單中,加入注冊(cè)權(quán)限
總結(jié)
以上是生活随笔為你收集整理的android动态权限封装,Android 动态权限申请的封装的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: red米k20和k20pro的区别
- 下一篇: lenovo人工服务电话(联想lenov