看看你能不能帮我一下。我有一个应用程序,启动时需要我一些存储空间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”,但尚未表明任何许可。看看你能不能帮我。非常感谢。