屏幕旋转和onRequestPermissionsResults问题

时间:2020-06-18 12:43:32

标签: java android

看看你能不能帮我一下。我有一个应用程序,启动时需要我一些存储空间permissions,到目前为止一切顺利。当我没有给他权限时,他会显示一个对话框,告诉我他需要这些权限,该对话框显示在“ onRequestPermissionsResults”中。问题是在某些设备中,在我给您权限的答案之前,您已经输入了方法,结果是给我一个空数组,然后进入显示对话框的位置,然后再给您权限不再显示,但是在我指示是否授予您权限之前,不应该显示该对话框,而不是之前,我怀疑在强制旋转屏幕时会发生这种情况,我将代码留给您:

这是我的onCreate方法,我输入了两次:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    login = new LoginHelp(getBaseContext(), this, getSupportFragmentManager(), false);

    if (DiaxApplication.isSmartphone(this)) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    } else {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }

    if (!isPermissionGranted()) {
        requestPermission();
    } else {
        DiaxApplication.getInstance().permissionsGranted();
    }
}

这是我请求权限的方法:

private  void requestPermission() {

    // Permission is not granted
    if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(R.string.app_name)
                .setMessage( R.string.permission_storage_rationale)
                .setPositiveButton(R.string.dialog_button_aceptar, (dialog, which) -> ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE },
                        REQUEST_CODE_SOME_FEATURES_PERMISSIONS))
                .setCancelable(false)
                .show();

    } else {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE },
                    REQUEST_CODE_SOME_FEATURES_PERMISSIONS);
    }

}

通过这一步,我检查是否激活了权限:

private boolean isPermissionGranted() {
    return ((ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED  &&
            ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED ));

}

最后这是我的方法onRequestPermissionsResults:

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case REQUEST_CODE_SOME_FEATURES_PERMISSIONS: {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                DiaxApplication.getInstance().permissionsGranted();

            } else {
                showDialogMessage();
            }
        }
    }
}

我怀疑问题在于强制视图旋转,因为它前进并输入了“ onRequestPermissionsResults”,但尚未表明任何许可。看看你能不能帮我。非常感谢。

0 个答案:

没有答案
相关问题