From 75e16d0f54fef19854d1085e495cfe5e7ec12f23 Mon Sep 17 00:00:00 2001 From: Marc Schink Date: Thu, 7 Dec 2017 22:13:24 +0100 Subject: [PATCH] UriHandlerActivity: Handle 'message action' XMPP URI --- .../conversations/ui/UriHandlerActivity.java | 47 ++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/UriHandlerActivity.java b/src/main/java/eu/siacs/conversations/ui/UriHandlerActivity.java index f96faf31b..c725ec8cf 100644 --- a/src/main/java/eu/siacs/conversations/ui/UriHandlerActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/UriHandlerActivity.java @@ -2,6 +2,11 @@ package eu.siacs.conversations.ui; import android.app.Activity; import android.content.Intent; +import android.net.Uri; + +import eu.siacs.conversations.persistance.DatabaseBackend; +import eu.siacs.conversations.utils.XmppUri; +import eu.siacs.conversations.xmpp.jid.Jid; public class UriHandlerActivity extends Activity { @@ -16,6 +21,41 @@ public class UriHandlerActivity extends Activity { handleIntent(intent); } + private void handleUri(Uri uri) { + final Intent intent; + final XmppUri xmppUri = new XmppUri(uri); + final int numAccounts = DatabaseBackend.getInstance(this).getAccountJids().size(); + + if (numAccounts == 0) { + intent = new Intent(getApplicationContext(), WelcomeActivity.class); + startActivity(intent); + return; + } + + if (xmppUri.isAction(XmppUri.ACTION_MESSAGE)) { + final Jid jid = xmppUri.getJid(); + final String body = xmppUri.getBody(); + + if (jid != null) { + intent = new Intent(getApplicationContext(), ShareViaAccountActivity.class); + intent.putExtra(ShareViaAccountActivity.EXTRA_CONTACT, jid.toString()); + intent.putExtra(ShareViaAccountActivity.EXTRA_BODY, body); + } else { + intent = new Intent(getApplicationContext(), ShareWithActivity.class); + intent.setAction(Intent.ACTION_SEND); + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_TEXT, body); + } + } else { + intent = new Intent(getApplicationContext(), StartConversationActivity.class); + intent.setAction(Intent.ACTION_VIEW); + intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); + intent.setData(uri); + } + + startActivity(intent); + } + private void handleIntent(Intent data) { if (data == null) { finish(); @@ -25,12 +65,7 @@ public class UriHandlerActivity extends Activity { switch (data.getAction()) { case Intent.ACTION_VIEW: case Intent.ACTION_SENDTO: - final Intent intent = new Intent(getApplicationContext(), - StartConversationActivity.class); - intent.setAction(data.getAction()); - intent.setData(data.getData()); - intent.setAction(data.getAction()); - startActivity(intent); + handleUri(data.getData()); } finish();