我希望以与用户在启动器中点按其图标时完全相同的方式从状态栏通知中恢复我的应用.
那就是:我希望堆栈处于与用户离开之前相同的状态.
在通知上设置待处理意图时的问题是它始终以特定活动为目标.我不想要这个.我需要像启动器那样恢复应用程序.
因此,如果用户处于活动A中,我想恢复活动A.如果他已从活动A启动活动B,那么我希望在用户点击通知时显示B,并且要恢复堆栈以便A获得用户点击B中的后退按钮时恢复
还有其他几个问题与类似的标题,但没有一个解决我的问题.
GrA*_*And 151
只需使用Android启动应用时使用的相同意图过滤器:
final Intent notificationIntent = new Intent(context, YourActivity.class);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Run Code Online (Sandbox Code Playgroud)
由于Intent您在Activity通知栏中创建的打开方式与用于启动应用程序的Android相同,因此Activity将显示之前打开的内容而不是创建新应用程序.
Tho*_*mas 29
对于您不希望/无法对启动器活动进行硬编码的情况,此解决方案可以正常工作
Intent i = getPackageManager()
.getLaunchIntentForPackage(getPackageName())
.setPackage(null)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, i, 0);
return new NotificationCompat.Builder(context)
...
.setContentIntent(pendingIntent)
.build();
Run Code Online (Sandbox Code Playgroud)
该setPackage(空)的部分是关键,因为没有它的应用程序没有恢复到以前的任务在我的情况.我将我的意图与Android启动器的意图进行了比较,并注意到pkg没有设置在那里,所以我想出了如何从意图中删除包名.
我的特殊情况是通知是在库中创建的,因此我无法知道启动器活动是什么.
| 归档时间: |
|
| 查看次数: |
28659 次 |
| 最近记录: |