aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui/ConversationsActivity.java')
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConversationsActivity.java22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java
index 11d4cc31f..8d8e5386a 100644
--- a/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java
@@ -63,6 +63,7 @@ import net.java.otr4j.session.SessionStatus;
import org.openintents.openpgp.util.OpenPgpApi;
+import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -111,6 +112,11 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
public static final String ACTION_DESTROY_MUC = "de.pixart.messenger.DESTROY_MUC";
public static final int REQUEST_OPEN_MESSAGE = 0x9876;
public static final int REQUEST_PLAY_PAUSE = 0x5432;
+ private static List<String> VIEW_AND_SHARE_ACTIONS = Arrays.asList(
+ ACTION_VIEW_CONVERSATION,
+ Intent.ACTION_SEND,
+ Intent.ACTION_SEND_MULTIPLE
+ );
private boolean showLastSeen = false;
@@ -126,8 +132,9 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
private boolean mActivityPaused = true;
private AtomicBoolean mRedirectInProcess = new AtomicBoolean(false);
- private static boolean isViewIntent(Intent i) {
- return i != null && ACTION_VIEW_CONVERSATION.equals(i.getAction()) && i.hasExtra(EXTRA_CONVERSATION);
+ private static boolean isViewOrShareIntent(Intent i) {
+ Log.d(Config.LOGTAG, "action: " + (i == null ? null : i.getAction()));
+ return i != null && VIEW_AND_SHARE_ACTIONS.contains(i.getAction()) && i.hasExtra(EXTRA_CONVERSATION);
}
private static Intent createLauncherIntent(Context context) {
@@ -451,7 +458,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
} else {
intent = savedInstanceState.getParcelable("intent");
}
- if (isViewIntent(intent)) {
+ if (isViewOrShareIntent(intent)) {
pendingViewIntent.push(intent);
setIntent(createLauncherIntent(this));
}
@@ -483,6 +490,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
@Override
public void onConversationSelected(Conversation conversation) {
+ clearPendingViewIntent();
if (ConversationFragment.getConversation(this) == conversation) {
Log.d(Config.LOGTAG, "ignore onConversationSelected() because conversation is already open");
return;
@@ -490,6 +498,12 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
openConversation(conversation, null);
}
+ public void clearPendingViewIntent() {
+ if (pendingViewIntent.clear()) {
+ Log.e(Config.LOGTAG, "cleared pending view intent");
+ }
+ }
+
private void displayToast(final String msg) {
runOnUiThread(() -> Toast.makeText(ConversationsActivity.this, msg, Toast.LENGTH_SHORT).show());
}
@@ -626,7 +640,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
@Override
protected void onNewIntent(final Intent intent) {
- if (isViewIntent(intent)) {
+ if (isViewOrShareIntent(intent)) {
if (xmppConnectionService != null) {
processViewIntent(intent);
} else {