如何重新申请相机许可?

时间:2017-10-12 05:08:36

标签: android android-permissions

我正在使用这些代码

int PERMISSION_ALL = 1;
    String[] PERMISSIONS = {CAMERA, RECORD_AUDIO ,Manifest.permission.WRITE_EXTERNAL_STORAGE, ACCESS_FINE_LOCATION};

    if(!hasPermissions(this, PERMISSIONS)){
        ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
    }

public static boolean hasPermissions(Context context, String... permissions) {
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
        for (String permission : permissions) {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
    }
    return true;
}

我的应用仅在提供相机,写入存储和录制音频权限时才需要移至下一个活动。如果任何请求被拒绝,我该如何重新请求。

1 个答案:

答案 0 :(得分:0)

试试这个

String permission = Manifest.permission.CAMERA;
        int grant = ContextCompat.checkSelfPermission(this, permission);
        if (grant != PackageManager.PERMISSION_GRANTED) {
            String[] permission_list = new String[1];
            permission_list[0] = permission;
            ActivityCompat.requestPermissions(this, permission_list, 1);
        }

并使用onRequestPermissionsResult()方法处理用户授予权限的权限结果

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == 1) {
        Toast.makeText(this, "Camera Permission granted", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(this, "Camera Permission granted", Toast.LENGTH_SHORT).show();
    }
}