美文网首页
android权限管理学习

android权限管理学习

作者: UniThan | 来源:发表于2016-07-12 17:28 被阅读29次

    这两天在写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。

    相关文章

      网友评论

          本文标题:android权限管理学习

          本文链接:https://www.haomeiwen.com/subject/gaqjjttx.html