Android6.0权限管理

2016-05-23  本文已影响237人  一路摇到顶

6.0发布到时候,权限管理这一块,是一个热点。官方文档也写的很详细了文档

  1. 在Manifests中申请权限。
  2. 检查系统版本
public boolean checkSDKVersion() {    
      return Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M;
}
  1. 检查是否有权限
public boolean hasPermission(String str) {    if (checkSDKVersion())        return (checkSelfPermission(str) == PackageManager.PERMISSION_GRANTED);    return true;}
  1. 是否显示权限说明
   //在第一次安装的时候,这个方法会反悔false,因此你可以直接请求权限,如果用户以前拒绝过一个权限的请求,那么再次请求该权限的时候可以显示一个解释该请求用途的的信息。               
 boolean b = shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE);                if (b) {//是否需要显示说明,,为什么需要给权限的对话框                    Toast.makeText(this, "我就是要这个权限,你要给我", Toast.LENGTH_LONG).show();                }                requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
  1. 回调处理
@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;   
     }      
  // other 'case' lines to check for other       
 // permissions this app might request    }}

查看permission
adb shell pm list permissions -d -g
危险权限,分组查看

上一篇 下一篇

猜你喜欢

热点阅读