我想通过点击应用程序小部件来打开我的应用程序。
remote_views.setOnClickPendingIntent( R.id.layout, PendingIntent.getActivity( context, 0, new Intent( context, Main.class ).setFlags( Intent.FLAG_ACTIVITY_NEW_TASK ), PendingIntent.FLAG_IMMUTABLE ) );
但我想打开现有的应用程序并保留堆栈。如果我删除Intent.FLAG_ACTIVITY_NEW_TASK
,那么在新的Android上,我会得到:
java.lang.RuntimeException:导致错误:从“活动”上下文外部调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。
我可以在清单文件中设置
<activity
android:name=".Main"
android:launchMode="singleInstance"
android:exported="true"
>
并打开现有活动,但丢失了回栈,此外,然后按下主页按钮,并通过图标再次启动应用程序,然后也丢失了回栈。
那么,这可能吗?
2条答案
按热度按时间wh6knrhe1#
使用一个启动
Intent
。这将把现有的任务带到前台,无论它处于什么状态。如果它还没有运行,它将以用户点击主屏幕中的应用程序图标时的方式启动它:您不需要在
MainActivity
的清单中使用任何特殊的启动模式。js4nwp542#
我不确定这是正确的方式,但它是工程。
1.在主活动
android:launchMode="singleTop"
的清单文件中设置。1.在
ocCreate()
方法中的主要活动中:因此,如果系统通过点击小工具(taskId将相同)打开新的主活动,并将其放在回栈顶部,然后完成它。