一.概述
Android6.0发布一年多时间,带来了一些新的api变化,越来越多的手机倾向于使用Android6.0以上的系统,随之改变的是越来越多的项目要适配6.0的系统。
本篇文章目的就是对运行时权限处理的一个介绍,以及对目前权限相关的库的一些了解。
二.实现方式
- 原生实现方式
2.使用MPermissions框架
private static final int MY_PERMISSIONS_REQUEST_CAMERA =1;
@OnClick({R.id.bt_scan_qrcode})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.bt_scan_qrcode:
//使用MPermissions来动态申请权限 MPermissions.requestPermissions(QRCodeActivity.this, MY_PERMISSIONS_REQUEST_CAMERA, Manifest.permission.CAMERA);
break;
}
}
@Override
public void onRequestPermissionsResult( int requestCode, String[] permissions,int[] grantResults{
MPermissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@PermissionGrant(MY_PERMISSIONS_REQUEST_CAMERA)
public void requestSdcardSuccess(){
Toast.makeText(this, "GRANT ACCESS SDCARD!", Toast.LENGTH_SHORT).show();
startActivity(new Intent(this, ScanQRCodeActivity.class));
}
@PermissionDenied(MY_PERMISSIONS_REQUEST_CAMERA)
public void requestSdcardFailed(){
Toast.makeText(this, "DENY ACCESS SDCARD!", private static final int MY_PERMISSIONS_REQUEST_CAMERA= 1;
@OnClick({R.id.bt_scan_qrcode})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.bt_scan_qrcode:
//使用MPermissions来动态申请权限
MPermissions.requestPermissions(QRCodeActivity.this, MY_PERMISSIONS_REQUEST_CAMERA, Manifest.permission.CAMERA);
break;
}
@Override
public void onRequestPermissionsResult( int requestCode, String[] permissions,int[] grantResults){
MPermissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@PermissionGrant(MY_PERMISSIONS_REQUEST_CAMERA)
public void requestSdcardSuccess(){
Toast.makeText(this, "GRANT ACCESS SDCARD!", Toast.LENGTH_SHORT).show();
startActivity(new Intent(this, ScanQRCodeActivity.class));
}
@PermissionDenied(MY_PERMISSIONS_REQUEST_CAMERA)
public void requestSdcardFailed(){
Toast.makeText(this, "DENY ACCESS SDCARD!", Toast.LENGTH_SHORT).show();
}
}
用法简单明了,对于onRequestPermissionsResult所有的Activity都是一致的,所以可以放到BaseActivity中去。此外,在Fragment中使用的方式一致,详见库(https://github.com/hongyangAndroid/MPermissions.)
参考
(http://blog.csdn.net/lmj623565791/article/details/50709663)
(http://blog.csdn.net/m0_37168878/article/details/64437654)