安卓 动态权限

一、申请

//申请动态权限
    private void getPermission(){
        //申请运行时权限
        List<String> permissionList = new ArrayList<>();
        if (ContextCompat.checkSelfPermission(MyBaiduMap.this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED){
            //GPS定位
            permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
        }
        if (ContextCompat.checkSelfPermission(MyBaiduMap.this,Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED){
            //读取设备信息
            permissionList.add(Manifest.permission.READ_PHONE_STATE);
        }
        if (ContextCompat.checkSelfPermission(MyBaiduMap.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED){
            //sd卡权限
            permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
        }if (ContextCompat.checkSelfPermission(MyBaiduMap.this,Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED){
            //网络定位
            permissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION);
        }if (ContextCompat.checkSelfPermission(MyBaiduMap.this,Manifest.permission.CAMERA)
                != PackageManager.PERMISSION_GRANTED){
            //使用步行AR导航,配置Camera权限
            permissionList.add(Manifest.permission.CAMERA);
        }

        if (!permissionList.isEmpty()){
            String[] permission = permissionList.toArray(new String[permissionList.size()]);
            ActivityCompat.requestPermissions(this,permission,1);//申请
        }
    }

二、反馈

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode){
            case 1:
                if (grantResults.length > 0){
                    for (int result:grantResults){
                        if (result != PackageManager.PERMISSION_GRANTED){
                            Toast.makeText(this,"必须同意所有权限才可使用本程序",Toast.LENGTH_SHORT).show();
                            finish();
                            return;
                        }
                    }
                }else {
                    Toast.makeText(this,"发生未知错误",Toast.LENGTH_SHORT).show();
                }
                break;
            default:
        }
    }


猜你喜欢

转载自blog.csdn.net/jinmie0193/article/details/80586968