UriHandlerActivity: Handle 'message action' XMPP URI
This commit is contained in:
parent
0fac4be94d
commit
75e16d0f54
|
@ -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();
|
||||||
|
|
Loading…
Reference in a new issue