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);
}
}
}
}
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);
}
}
}
}
相关文章推荐
- 适配android6.0:运行时权限检查机制
- Android6.0权限适配之WRITE_EXTERNAL_STORAGE(SD卡写入)
- Android6.0 权限申请封装
- Android6.0权限适配之WRITE_EXTERNAL_STORAGE(SD卡写入)
- android6.0权限实用封装
- Android6.0权限适配
- Android6.0M权限管理实战,完美轻量级封装
- Android6.0动态权限的封装
- Android6.0权限封装
- Android6.0M权限管理实战,完美轻量级封装
- android6.0权限适配RxPermissions
- Android6.0运行时权限的理解和封装
- Android6.0运行时权限的封装
- Android6.0动态权限设置 第三方开源库permissiongen使用封装
- android6.0运行时权限完美封装
- android6.0以上获取权限简单封装
- Android6.0运行时权限的封装(参考郭神的视频总结的代码)
- Android6.0权限适配
- Android6.0运行时权限封装(避免用户选择不再提示后无法获取权限的问题)
- android6.0权限封装及全局捕获异常