Android6.0运行时权限

解决Android studio导入项目时build running时间过长的问题一.我们从网上下载的项目通过Android studio导入时往往会显示build Running,通常这个过程会很漫长,下面给出解决办法用于后期查看 二.
摘要由CSDN通过智能技术生成

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

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

这里引用郭霖对android运行时权限的总结,一共9组24个权限,只有在android6.0 及以上的手机上使用这些权限时,要进行运行时权限处理(仍需要在manifest文件中注册相关权限).

二.实现方式

  1. 原生实现方式

申请单个权限
这里写图片描述

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值