运行时权限的获取

基本原理

  1. 权限在使用时,向android系统请求
  2. android系统会弹出对话框,将决定权交给用户。
  3. 用户的决定将会以回调函数的形式交给activity
  4. 在回调函数中,根据不同的决定结果,选择执行不同的操作

分解:

  1. 在某一事件处理中,检查是否具有某项权限:
 //使用ContextWrapper的checkSelfPermission方法      
if(checkSelfPermission(Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED){}
//使用CContextCompat的checkSelfPermission方法        
if(ContextCompat.checkSelfPermission(this,Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED)
  1. 不具备权限时,进行权限申请:
if(checkSelfPermission(Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED){
            requestPermissions(new String[]{Manifest.permission.CALL_PHONE},1);
        }

注意:
(1)前提条件,必须在清单文件中对权限进行申请

<uses-permission android:name="android.permission.CALL_PHONE"/>

此时,用户会得到通知:


屏幕快照 2019-06-23 下午2.38.33.png

(2)requestPermissions()是异步方法,所以程序会正常向下执行!

  1. 回调处理:
    在activity中:
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case 1:
                if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
                    //得到了用户的允许
                }
                else{
                    //用户拒绝
                }
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容