Android 运行时权限

来源:互联网 发布:js input file value 编辑:程序博客网 时间:2024/05/29 14:27

Android开发团队在6.0系统中加入运行时权限的功能,用户不需要在安装软件的时候一次性授权所有的权限,而是可以在软件使用过程中对某一权限进行授权。Android 将所有权限分为两类,一类是普通权限,一类是危险权限。

  • 普通权限:不会直接威胁到用户的安全及隐私,系统会自动帮我们授权。
  • 危险权限:那些可能触及用户的隐私,或者设备安全性的权限,比如设备联系人信息,定位设备地理位置等。
  • 危险权限一共9组24个权限,分别为GALENDAR,CAMERA,CONTACTS,LOCATION,MICROPHONE,PHONE,SENSORS,SMS,STORAGE。在进行运行时权限处理使用的是权限名,一旦用户授权了,那么该组内的其他权限也同时被授权。

申请读写SD卡权限,代码示例

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {    ActivityCompat.requestPermissions(this,new String[{Manifest.permission.READ_EXTERNAL_STORAGE},1);}
  • 第一步判断用户是否给我们授权,第一个参数是Context,第二个参数具体的权限名。
  • 第二步如果没有授权的话向用户申请授权,第一个参数要求Activity实例,第二个参数申请的权限名数组,第三个参数请求码,唯一值即可。
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        switch (requestCode) {            case 1:                if (grantResults.length > 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) {                    Toast.makeText(this, "拒绝权限将无法使用程序", Toast.LENGTH_SHORT).show();                    finish();                }                break;            default:        }    }
  • 申请权限后都会回调这个方法,授权结果则会封装在grantResults参数中,然后判断授权结果。
原创粉丝点击