Android 6 检查权限代码

 1 private static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS= 0;
 2 
 3 //检查目前是否有权限
 4 if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
 5         != PackageManager.PERMISSION_GRANTED) {
 6 
 7     if (shouldShowRequestPermissionRationale(
 8             Manifest.permission.READ_CONTACTS)) {
 9         // 这里写一些向用户解释为什么我们需要读取联系人的提示得代码
10     }
11 
12 //请求权限,系统会显示一个获取权限的提示对话框,当前应用不能配置和修改这个对话框
13     requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
14             MY_PERMISSIONS_REQUEST_READ_CONTACTS);
15    
16     return;
17 }

下面代码处理用户响应 

 1 @Override
 2 public void onRequestPermissionsResult(int requestCode,
 3         String permissions[], int[] grantResults) {
 4     switch (requestCode) {
 5         case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
 6             if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
 7                 // 授权成功
 8 
 9             } else {
10                 // 授权失败
11 
12             }
13             return;
14         }
15 
16     }
17 }

shouldShowRequestPermissionRationale() 方法说明

1. 第一次请求权限时,用户拒绝了,下一次:shouldShowRequestPermissionRationale() 返回 true,应该显示一些为什么需要这个权限的说明
2.第二次请求权限时,用户拒绝了,并选择了“不在提醒”的选项时:shouldShowRequestPermissionRationale() 返回 false
3. 设备的策略禁止当前应用获取这个权限的授权:shouldShowRequestPermissionRationale() 返回 false

原文地址:https://www.cnblogs.com/l2rf/p/5010738.html