aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java52
1 files changed, 23 insertions, 29 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
index dd57c13e..0f5e728f 100644
--- a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
@@ -576,22 +576,11 @@ public class StartConversationActivity extends XmppActivity {
if (intent == null || intent.getAction() == null) {
return false;
}
- Invite invite = null;
switch (intent.getAction()) {
case Intent.ACTION_SENDTO:
- try {
- // TODO use Intent.parse ?!?
- // sample: imto://xmpp/jid@foo.com
- String jid = URLDecoder.decode(
- intent.getData().getEncodedPath(), "UTF-8").split(
- "/")[1];
- return handleJid(jid);
- } catch (UnsupportedEncodingException e) {
- return false;
- }
case Intent.ACTION_VIEW:
- invite = new Invite(intent.getData());
- return invite.invite();
+ Log.d(Config.LOGTAG, "received uri=" + intent.getData());
+ return new Invite(intent.getData()).invite();
case NfcAdapter.ACTION_NDEF_DISCOVERED:
for (Parcelable message : getIntent().getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)) {
if (message instanceof NdefMessage) {
@@ -601,26 +590,21 @@ public class StartConversationActivity extends XmppActivity {
case NdefRecord.TNF_WELL_KNOWN:
if (Arrays.equals(record.getType(), NdefRecord.RTD_URI)) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
- invite = new Invite(record.toUri());
+ return new Invite(record.toUri()).invite();
} else {
- byte[] mPayload = record.getPayload();
- if (mPayload[0] == 0) {
- invite = new Invite(Uri.parse(new String(Arrays.copyOfRange(
- mPayload, 1, mPayload.length))));
+ byte[] payload = record.getPayload();
+ if (payload[0] == 0) {
+ return new Invite(Uri.parse(new String(Arrays.copyOfRange(
+ payload, 1, payload.length)))).invite();
}
}
- if (invite != null) {
- return invite.invite();
- }
}
}
}
}
}
- return false;
- default:
- return false;
}
+ return false;
}
private boolean handleJid(String jid) {
@@ -776,11 +760,21 @@ public class StartConversationActivity extends XmppActivity {
}
void parse(Uri uri) {
- muc = uri.getQuery() != null && uri.getQuery().equalsIgnoreCase("join");
- if (uri.getAuthority() != null) {
- jid = uri.getAuthority();
- } else {
- jid = uri.getSchemeSpecificPart().split("\\?")[0];
+ String scheme = uri.getScheme();
+ if ("xmpp".equals(scheme)) {
+ // sample: xmpp:jid@foo.com
+ muc = "join".equalsIgnoreCase(uri.getQuery());
+ if (uri.getAuthority() != null) {
+ jid = uri.getAuthority();
+ } else {
+ jid = uri.getSchemeSpecificPart().split("\\?")[0];
+ }
+ } else if ("imto".equals(scheme)) {
+ // sample: imto://xmpp/jid@foo.com
+ try {
+ jid = URLDecoder.decode(uri.getEncodedPath(), "UTF-8").split("/")[1];
+ } catch (UnsupportedEncodingException e) {
+ }
}
}
}