我现在有一个Activity,当它显示时,还会在通知栏中显示通知。
这样,当用户按下home键并将Activity推到后台时,他们可以通过通知返回Activity。
问题出现在用户按下返回按钮时,我的Activity被销毁,但通知仍然存在,因为我希望用户能够按返回按钮但仍能通过通知回到Activity。但是,当用户尝试这样做时,我会收到空指针异常,因为它正在尝试启动新的Activity而不是带回旧的Activity。
因此,本质上我希望返回按钮与主页按钮的作用完全相同,以下是我迄今为止尝试的方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
Log.d("CDA", "onKeyDown Called");
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
return;
}
然而,上述代码似乎仍允许我的Activity被销毁。当用户按下返回按钮时,我该如何防止其销毁?
if (Integer.parseInt(android.os.Build.VERSION.SDK) > 5
,<
应该变成>
。 - SudoPlzOnBackInvokedCallback
或androidx.activity.OnBackPressedCallback
来处理后退导航。 - Alex Cohn