Activity.finish,除非后面没有任何内容

时间:2017-08-03 13:16:54

标签: android android-activity

在whatsapp中,当你在聊天并返回时,关闭聊天,让你在主屏幕滚动到你所在的位置。但是,如果您通过通知进行聊天并且没有主屏幕,则会创建一个新屏幕。他们是如何做到的?

我在考虑某种ifHasBackStack,但想知道是否有更清洁的方式,如果不是找到背斜堆尺寸的最佳方法

似乎在我的问题中试图更清楚,我使它与实际用例略有不同,但是这是一个错误,因为答案现在改变了。

实际使用案例是我希望应用能够通过其图库(或其他图像应用)将项目分享到我的应用。如果用户从应用程序内部获取图像,我可以在发布图像部分的最后部分使用activity.finish()并且它工作得很好,但是如果我使用activity.finish(),如果他们从我的应用程序到另一个应用程序,如画廊,然后我想带他们到我的主屏幕。

对不起造成的混乱!

2 个答案:

答案 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>