无法隐藏Marshmallow运行时权限对话框

时间:2016-03-22 11:45:43

标签: android android-6.0-marshmallow

我已在 BaseActivity 上通过 onResume()管理了运行时权限。当我启动我的应用程序时,会打开一个运行时权限对话框而不对对话框执行任何操作,我会转到应用程序设置并对权限执行操作。现在当我再次恢复应用程序时,仍然显示上一个对话框。

因此,如果我已经允许该权限,那么我应该如何处理该对话框,因为它仍在显示?

3 个答案:

答案 0 :(得分:3)

这是一个Android操作系统问题。我也面临同样的问题并发现操作系统问题。

答案 1 :(得分:1)

在onResume方法中请求权限不是一个好主意。您应该只在需要时请求权限。但是,您可以使用此代码来解决问题:

boolean permissionRequested = false;

@Override
protected void onResume() {
    super.onResume();
    if (Build.VERSION.SDK_INT > 22) {
        if (getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) == PackageManager.PERMISSION_GRANTED) {
            permissionRequested = false;
            Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show();
        } else {
            if (permissionRequested) {
                permissionRequested = false;
                Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
            } else {
                permissionRequested = true;
                requestPermissions(new String[] { Manifest.permission.CAMERA }, 100);
            }
        }
    } else {
        Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show();
    }
}

答案 2 :(得分:-1)

检查您是否拥有onResume的权限 - 如果您收到否定结果,则仅显示该对话框