您的位置:首页 > 移动开发 > Android开发

Android6.0适配权限封装类(仿RxPromission,比之更加解耦)

2018-03-22 16:53 344 查看
(一)使用实例


public class TestActivity extends AppCompatActivity {

private static final int CAMERA_CODE = 0x01; //照相的权限(随意写)

private CheckPermission mCheckPermission;//申请权限的对象

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化适配Android6.0权限的类CheckPermission
mCheckPermission = new CheckPermission(this);
//申请权限 做操作
mCheckPermission.checkPermission(CAMERA_CODE, new CheckPermission.PListener() {
@Override
public void onHavaPermission(boolean havaPermission) {
if (havaPermission){
//用户授权了....,,
}else {
//用户没有授权......
}
}
}, Manifest.permission.CAMERA);
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
mCheckPermission.onRequestPermissionsResult(requestCode, permissions, grantResults);//调用onRequestPermissionsResult
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}(二)CheckPromissio类
/**
* Created by 刘强lq on 2017/11/2.
* <p>
* 适配Android6.0权限
*/
public class CheckPermission {

//权限的监听
public i
ae1a
nterface
PListener {
void onHavaPermission(boolean havaPermission);
}

//当前的权限 默认没有
private int currentPermissionCode;

private Activity mActivity;

public CheckPermission(Activity activity) {
mActivity = activity;
}

/**
* 检查是否有权限(适应android6.0)
*/
private boolean hasPermission(String... permissions) {
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(mActivity, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}

private PListener mTempListener;//定义转换监听

/**
* 申请权限(适应android6.0)
*
* @param permissionCode 权限申请Code
* @param permissions 申请的权限
*/
public void checkPermission(int permissionCode, PListener permissionListener, String... permissions) {
mTempListener = permissionListener;
currentPermissionCode = permissionCode;
if (permissions == null) {
throw new NullPointerException("requestPermission method parameters is null");
}
if (hasPermission(permissions)) { //有权限
mPermissionListener.onHavaPermission(true);
} else {//如果没有权限 则申请权限
ActivityCompat.requestPermissions(mActivity, permissions, currentPermissionCode);
}
}

//进行权限的监听
private PListener mPermissionListener = new PListener() {
@Override
public void onHavaPermission(boolean havaPermission) {
mTempListener.onHavaPermission(havaPermission);
}
};

/**
* 申请权限
*/
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == currentPermissionCode) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mPermissionListener.onHavaPermission(true);//有权限
} else {
mPermissionListener.onHavaPermission(false);
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: