Android6.0运行时权限

一.概述
Android6.0发布一年多时间,带来了一些新的api变化,越来越多的手机倾向于使用Android6.0以上的系统,随之改变的是越来越多的项目要适配6.0的系统。

本篇文章目的就是对运行时权限处理的一个介绍,以及对目前权限相关的库的一些了解。

Android6.0运行时权限_第1张图片

二.实现方式

  1. 原生实现方式

Android6.0运行时权限_第2张图片
Android6.0运行时权限_第3张图片

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)

你可能感兴趣的:(Android小知识,Android6-0)