在我的应用中,我创建了一个自定义通知,其中包含一个显示最近应用的按钮(而不是长按主页按钮)
当用户打开主要活动并按主页按钮进入主屏幕然后拖动通知抽屉并单击按钮时:
期望的结果是显示最近的应用程序,主要活动是最近的应用程序之一。
实际结果是显示了最近的应用,但主要活动不在其中,主要活动恢复。
我的代码启动“RecentApps(是一个显示最近应用程序的虚拟类)”具有待定意图的类
Intent recentAppIntent = new Intent(getBaseContext(), RecentApps.class);
PendingIntent pendingrecentAppIntent = PendingIntent.getActivity(getBaseContext(), 1, recentAppIntent, 0);
notificationView.setOnClickPendingIntent(R.id.recentAppButt, pendingrecentAppIntent);
我认为问题是getBaseContext,所以当主要活动还没有完成时,会显示最近的应用程序,但上下文是主要活动。
我尝试了getApplication和getApplicationContext但没有工作。
我还尝试使用“recentAppIntent”标志,但它不起作用,这是使用的一半解决方案
recentAppIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
但它不是我需要的。
所以,我的问题是“如何完成待处理意图开始的主要活动”。
提前致谢,Mostafa
答案 0 :(得分:3)
您需要确保MainActivity
和RecentApps
不属于同一任务。 “最近的应用”实际上并未显示最近的应用。它显示了最近的任务。
要确保您的RecentApps
与MainActivity
不在同一任务中,您可以将以下内容添加到<activity>
清单中的RecentApps
定义中:
aandroid:taskAffinity=""
此外,在创建通知时,将FLAG_ACTIVITY_NEW_TASK
添加到Intent
,如下所示:
Intent recentAppIntent = new Intent(getBaseContext(), RecentApps.class);
recentAppIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingrecentAppIntent = PendingIntent.getActivity(getBaseContext(), 1, recentAppIntent, 0);
notificationView.setOnClickPendingIntent(R.id.recentAppButt, pendingrecentAppIntent);
答案 1 :(得分:0)
我认为FLAG_ACTIVITY_CLEAR_TOP
将有助于作为旗帜。
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
此处提供了对Intent标志的说明:link