android权限管理学习

2016-07-12  本文已影响29人  UniThan

这两天在写APP的时候,发现最新版本(targetSdkVersion 23)编写的代码,明明在AndroidManifest中请求了相关权限,但是在编写调用相关服务的代码时,却发现要你用代码主动做权限检查,不然会抛出SecurityException。
为什么会有这样的权限检查要求呢?这就是新版本的安全机制。当APP安装时,默认请求的权限是关闭的,需要用代码触发用户去同意获取这些权限。
在以前的版本中,我们可以发现这样的请求在APP安装时是全部获取了的。
那么我们怎样用代码去获取这些权限呢。

  private void checkPermission(){        
      int hasWriteContactsPermission = ContextCompat.checkSelfPermission(TargetUserListActivity.this,Manifest.permission.CALL_PHONE);        
      if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {            
           if(!ActivityCompat.shouldShowRequestPermissionRationale(TargetUserListActivity.this, Manifest.permission.CALL_PHONE))  {
                  ActivityCompat.requestPermissions(TargetUserListActivity.this, new String[] {Manifest.permission.CALL_PHONE},REQUEST_CODE_ASK_PERMISSIONS);            
       }        
  }

这个函数用于请求ContextCompat是V4兼容包的方法,其实Activity的checkSelfPermission和requestPermissions也是用来做权限检查的,但是只能应用于SDK 23,所以并不适用于需要兼容23以下版本的APP。

上一篇下一篇

猜你喜欢

热点阅读