我正在尝试实现此处描述的行为,其中通知(或其他)在您的应用中启动"内部"活动,然后当用户按下它时进入我的"主页"活动.
Android文档说
对于"后退"按钮,您应该通过在任务的后台堆栈中插入应用程序最顶层屏幕的完整向上导航路径,使导航更具可预测性.这允许忘记他们如何进入您的应用程序的用户在退出之前导航到应用程序的最顶层屏幕.
有没有一个好方法来实际做到这一点?关于Stackoverflow的其他问题建议启动主要活动,意图告诉它开始内部活动,但这似乎是一个巨大的黑客,我有点怀疑谷歌会在Gmail中使用,我认为有一个不错的方法,给定他们在倡导这种行为.
那么有一种非黑客的方法吗?
Tim*_*mmm 69
啊哈,我只需要用PendingIntent.getActivities()而不是getActivity().另外值得一提的是TaskStackBuilder
这是一些代码:
Intent backIntent = new Intent(ctx, MainActivity.class);
backIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Intent intent = new Intent(ctx, ConversationActivity.class);
intent.putExtra("whatever", whatever);
final PendingIntent pendingIntent = PendingIntent.getActivities(ctx, UNIQUE_REQUEST_CODE++,
new Intent[] {backIntent, intent}, PendingIntent.FLAG_ONE_SHOT);
Run Code Online (Sandbox Code Playgroud)
刚试过它.它就像一个魅力.我最初怀疑如果应用程序已经运行可能会出现问题,并且您会收到通知.即你说活动堆栈是(最右边的):
[MainActivity] [SomeActivity]
Run Code Online (Sandbox Code Playgroud)
然后单击通知ConversationActivity.你会得到:?
[MainActivity] [SomeActivity] [MainActivity] [ConversationActivity]
Run Code Online (Sandbox Code Playgroud)
好吧,事实证明你神奇地得到了
[MainActivity] [SomeActivity] [ConversationActivity]
Run Code Online (Sandbox Code Playgroud)
这是我想要的,但我不知道它是如何做到的.我没有在任何活动上设置任何特殊选项.那好吧!
有一个关于如何做到这一点的新指南,它提出了一些与上述答案略有不同的做法:
https://developer.android.com/guide/topics/ui/notifiers/notifications.html#NotificationResponse
请注意,实际上不要0在getPendingIntent. 对我来说,任何不是 0 的数字都有效,但 0 会导致后退按钮进入启动器。
| 归档时间: |
|
| 查看次数: |
14493 次 |
| 最近记录: |