如何获得Marshmallow的所有权限?

时间:2017-12-14 10:21:21

标签: android manifest android-permissions

我在android studio.i中设计了一个应用程序,在AndroidManifest.xml文件中包含了CAMERAREADCONTECTS等所有权限。它在除Marshmallow之外的所有Android版本中都能正常工作。如何默认设置所有权限?

1 个答案:

答案 0 :(得分:0)

你需要在java代码工作之前设置权限

示例:

//declaration
private static final Integer CAMERA = 0x1;

//call this 
askForPermission(Manifest.permission.CAMERA, CAMERA);

    /**
     *
     * @param permission
     * @param requestCode
     */
    private void askForPermission(String permission, Integer requestCode) {
        if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {

            // Should we show an explanation?
            if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {

                //This is called if user has denied the permission before
                //In this case I am just asking the permission again
                ActivityCompat.requestPermissions(this, new String[]{permission}, requestCode);

            } else {

                ActivityCompat.requestPermissions(this, new String[]{permission}, requestCode);
            }
        } else {
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                           int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(ActivityCompat.checkSelfPermission(this, permissions[0]) ==
                PackageManager.PERMISSION_GRANTED){
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
                    != PackageManager.PERMISSION_GRANTED) {
            }
        }else{
            Toast.makeText(this, "Permission not granted", Toast.LENGTH_SHORT).show();
        }
    }