UriHandlerActivity: Handle 'message action' XMPP URI

This commit is contained in:
Marc Schink 2017-12-07 22:13:24 +01:00
parent 0fac4be94d
commit 75e16d0f54
1 changed files with 41 additions and 6 deletions

View File

@ -2,6 +2,11 @@ package eu.siacs.conversations.ui;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; 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 { public class UriHandlerActivity extends Activity {
@ -16,6 +21,41 @@ public class UriHandlerActivity extends Activity {
handleIntent(intent); 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) { private void handleIntent(Intent data) {
if (data == null) { if (data == null) {
finish(); finish();
@ -25,12 +65,7 @@ public class UriHandlerActivity extends Activity {
switch (data.getAction()) { switch (data.getAction()) {
case Intent.ACTION_VIEW: case Intent.ACTION_VIEW:
case Intent.ACTION_SENDTO: case Intent.ACTION_SENDTO:
final Intent intent = new Intent(getApplicationContext(), handleUri(data.getData());
StartConversationActivity.class);
intent.setAction(data.getAction());
intent.setData(data.getData());
intent.setAction(data.getAction());
startActivity(intent);
} }
finish(); finish();