虽然已经有很多关于Android6.0权限处理的方案和帖子甚至框架,但是自己真正动手实现的才是最踏实的!!闲话少说,开车!
楼主主要用了两个类,BaseActivity和PermissionPool
**BaseActivity:**所有Activity的父类
**功能:**让所有继承自它的Activity在需要进行权限处理的时候都只需要调用一个方法(连判断都不用),然后重写一个成功方法和一个失败方法,在方法里做自己的逻辑就行了。是不是很清晰明了??
实现:
public class BaseActivity extends AppCompatActivity {
/**
* android6.0权限处理
* @param code 权限标记Code
* @param permissionName 权限名称
*/
public void permissionDispose(@PermissionPool.PermissionCode int code,@PermissionPool.PermissionName String permissionName){
if(ContextCompat.checkSelfPermission(this, permissionName)!= PackageManager.PERMISSION_GRANTED){
//没有权限,开始申请
ActivityCompat.requestPermissions(this,new String[]{permissionName},code);
}else{
//有权限
onAccreditSucceed(code);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(grantResults[0]==PackageManager.PERMISSION_GRANTED){
//授权成功
onAccreditSucceed(requestCode);
}else if(grantResults[0]==PackageManager.PERMISSION_DENIED){
//授权失败