Android 6.0获取权限

转自:http://blog.csdn.net/lmj623565791/article/details/50709663
http://www.jianshu.com/p/a51593817825



1 检查权限 

  1. PackageManager pm = getPackageManager();  
  2.         boolean permission = (PackageManager.PERMISSION_GRANTED ==   
  3.                 pm.checkPermission(“android.permission.RECORD_AUDIO”“packageName”));  
  4.         if (permission) {  
  5.             showToast(“有这个权限”);  
  6.         }else {  
  7.             showToast(“木有这个权限”);  
  8.         }  

还有这种方法:

if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {
}else{
    //
}

这里涉及到一个API,
ContextCompat.checkSelfPermission
,主要用于检测某个权限是否已经被授予,方法返回值为
PackageManager.PERMISSION_DENIED
或者
PackageManager.PERMISSION_GRANTED
。当返回DENIED就需要进行申请授权了。

  1. 申请授权

     ActivityCompat.requestPermissions(thisActivity,
                    new String[]{Manifest.permission.READ_CONTACTS},
                    MY_PERMISSIONS_REQUEST_READ_CONTACTS);
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3

    该方法是异步的,第一个参数是Context;第二个参数是需要申请的权限的字符串数组;第三个参数为requestCode,主要用于回调的时候检测。可以从方法名requestPermissions以及第二个参数看出,是支持一次性申请多个权限的,系统会通过对话框逐一询问用户是否授权。

  2. 处理权限申请回调

    @Override
    public void onRequestPermissionsResult(int requestCode,
            String permissions[], int[] grantResults) {
        switch (requestCode) {
            case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
    
                    // permission was granted, yay! Do the
                    // contacts-related task you need to do.
    
                } else {
    
                    // permission denied, boo! Disable the
                    // functionality that depends on this permission.
                }
                return;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    ok,对于权限的申请结果,首先验证requestCode定位到你的申请,然后验证grantResults对应于申请的结果,这里的数组对应于申请时的第二个权限字符串数组。如果你同时申请两个权限,那么grantResults的length就为2,分别记录你两个权限的申请结果。如果申请成功,就可以做你的事情了~

    原文作者:ParaWayne
    原文地址: https://blog.csdn.net/SimonHunt/article/details/62045684
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞