在whatsapp中,当你在聊天并返回时,关闭聊天,让你在主屏幕滚动到你所在的位置。但是,如果您通过通知进行聊天并且没有主屏幕,则会创建一个新屏幕。他们是如何做到的?
我在考虑某种ifHasBackStack,但想知道是否有更清洁的方式,如果不是找到背斜堆尺寸的最佳方法
似乎在我的问题中试图更清楚,我使它与实际用例略有不同,但是这是一个错误,因为答案现在改变了。
实际使用案例是我希望应用能够通过其图库(或其他图像应用)将项目分享到我的应用。如果用户从应用程序内部获取图像,我可以在发布图像部分的最后部分使用activity.finish()并且它工作得很好,但是如果我使用activity.finish(),如果他们从我的应用程序到另一个应用程序,如画廊,然后我想带他们到我的主屏幕。
对不起造成的混乱!
答案 0 :(得分:1)
有多种方法可以实现您的要求。
一个非常简单的方法是,一旦点击通知,启动主屏幕并读取意图数据。获取特定的用户/聊天ID。并基于该用户将导航到该聊天线程。当用户点击后退按钮时,主屏幕就会在那里。
有一些不同的方法可以实现这种行为
答案 1 :(得分:1)
我在显示通知的项目中也做了同样的事情
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(YourActivity.class);
stackBuilder.addNextIntent(intent);
NotificationCompat.Builder mNotifyBuilder;
// Define notification builder
// .....
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mNotifyBuilder.setContentIntent(resultPendingIntent);
mNotificationManager.notify(Constants.CHATS_NOTIFICATION_ID, mNotifyBuilder.build());
已更新:(如果您要从其他应用中打开特定活动)
<activity
android:name="com.your.app.YourActivity"
android:screenOrientation="portrait">
<!-- Add below intent filter if you want to enable image sharing -->
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>