如何创建仅显示顶级应用活动的通知挂起意图?



目前我使用一个立即完成的Activity,从而从应用程序堆栈中提取最后一个Activity

public class ViewlessActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
finish();
}
}

有没有更好的解决方案?

更新:

我遵循了大卫的建议,但无法使其按要求工作(它始终显示 MainActivity)

下面是创建挂起意图的代码:

Intent mainActivityIntent = new Intent(this.getApplicationContext(), MainActivity.class);
mainActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingMainActivityIntent = PendingIntent.getActivity(this.getApplicationContext(), 0, mainActivityIntent, PendingIntent.FLAG_CANCEL_CURRENT);

AndroidManifest.xmlMainActivity设置了android:launchMode="singleTop"

你的解决方案很好。您也可以使用Intent.FLAG_ACTIVITY_NEW_TASK再次启动根Activity(带有 ACTION=MAIN 和 CATEGORY=LAUNCHER 的根)。如果您的应用程序已在运行,则只会将现有任务置于前台,而无需启动任何新Activity

将此代码添加到onCreate方法中MainActivity这是打开应用程序时将启动的第一个活动:

if (!isTaskRoot())
{
finish();
return;
}

另外,请记住在通知PendingIntentIntent中使用MainActivity

我希望这对你有所帮助。

最新更新