一.使用
添加依賴:compile 'pub.devrel:easypermissions:0.2.0'
二.準(zhǔn)備
在使用 EasyPermissions 之前,需要在 Activity或者 Fragment 中實(shí)現(xiàn) EasyPermissions.PermissionCallbacks接口,并且覆蓋以下方法:
/** * 使用 AfterPermissioonGranted 注解。這是可選的,但是提供出來是為了方便。
如果所有的請求的權(quán)限都被授予了,被注解的方法將會被執(zhí)行,
這樣做是為了簡化通常的請求權(quán)限成功之后再調(diào)用方法的流程。
同時(shí)也可以在 onPermissionsGranted 的回 調(diào)中添加邏輯操作:
@AfterPermissionGranted(RC_WRITE)
public void requestPermission() {
String[] perms = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
//去判斷 app 是否已經(jīng)有權(quán)限了。該方法的最后個(gè)參數(shù)是可變數(shù)組形式的,所以可以一次性查詢多個(gè)權(quán)限。
if (EasyPermissions.hasPermissions(this, perms)) {
startService(new Intent(mContext, UpdateService.class));
} else {
//使用 EasyPermissions#requestPermissions 去請求權(quán)限。該方法在請求權(quán)限的同時(shí)有必要的話會顯示使用權(quán)限理由。// requestCode 對于該方法來說必須是唯一的,同時(shí)最后個(gè)參數(shù)也是可變數(shù)組形式的,所以可以一次性請求多個(gè)權(quán)限
EasyPermissions.requestPermissions(this, "下載應(yīng)用需要文件寫入權(quán)限哦~", RC_WRITE, perms);
}
}
//處理權(quán)限是否成功申請
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// 將結(jié)果轉(zhuǎn)發(fā)給EasyPermissions
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
@Override
public void onPermissionsGranted(int requestCode, List<String> perms) {
//權(quán)限被賦予,requestCode必須是唯一的
if (RC_WRITE == requestCode) {
startService(new Intent(mContext, UpdateService.class));
}
}
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
//權(quán)限被拒絕
ToastUtil.shortShow("取消更新 T T");
}