Android 6.0 权限处理( Permission Denial异常)

来源:互联网 发布:java modbus与rs485 编辑:程序博客网 时间:2024/06/11 21:54

Android 6.0 权限管理

android基础

Android 6.0 以前权限处理:

<uses-permission android:name="android.permission.CAMERA" />

Android 6.0 权限以后:

目前需要动态授权的有以下几类

  • 身体传感器
  • 日历
  • 摄像头
  • 通讯录
  • 地理位置
  • 麦克风
  • 电话
  • 短信
  • 存储空间

所以在做这些操作的时候我们需要提示用户授权(弹出的MaterialDialog不支持修改)。

第一步 判断时候授权。

if (Build.VERSION.SDK_INT >= 23) {                        int checkCallPhonePermission = ContextCompat.checkSelfPermission(FoodActivity.this, Manifest.permission.CAMERA);                        if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){                            ActivityCompat.requestPermissions(FoodActivity.this,new String[]{Manifest.permission.CAMERA},222);                            return;                        }else{                                    //已经获取权限的处理                            openCamra();                        }                    } else {                                //Android 版本 6.0 以下的处理                        openCamra();                    }

第二步 接收MaterialDialog返回的结果。

    @Override    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {        switch (requestCode) {        //就像onActivityResult一样这个地方就是判断你是从哪来的。            case 222:                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    // 成功获取权限                    openCamra();                } else {                    // 未成功获取权限                    Toast.makeText(FoodActivity.this, "请打开权限,谢谢", Toast.LENGTH_SHORT)                            .show();                }                break;            default:                super.onRequestPermissionsResult(requestCode, permissions, grantResults);        }    }

Android 6.0 不做权限申请的异常

java.lang.SecurityException: Permission Denial
就是说你已经有一个权限被取消了。

阅读全文
0 0
原创粉丝点击