我需要为API级别23手动请求权限,以及出现对话窗口和应用程序进入后台的位置。请求权限窗口强制应用程序停止
这里是我的代码:
@Override
public void onDialogDone(int dialog, boolean result) {
DialogFragment newFragment;
switch (dialog) {
case EULA_DIALOG:
if (result) {
boolean numberExists = _appRegistration.checkPhoneNumber();
if (!numberExists) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_PHONE_STATE_READ);
return;
} else {
//do some work
}
} else {
Intent intent = new Intent(...);
startActivity(intent);
finish();
}
break;....
}
}
而且,在MainActivity我已经覆盖了以下方法:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case MY_PERMISSIONS_PHONE_STATE_READ: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// do some work
} else {
// do some work
}
return;
}
}
但如果我点击“允许”或“拒绝”,这种方法是没有调用,因为应用程序处于后台模式...我记录和onStop
方法,并且在显示权限窗口后调用它们。
它是否强制停止您的应用程序拒绝? –
并不重要,当显示对话框时,应用程序将在后台进行。它不等待答案 – Nininea
我认为这是problamatic Intent intent = new Intent(...); startActivity(intent); finish(); ,不知道你的if(结果),但其他部分是problamatic –