我需要爲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 –