diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index 89a04bc5c9aae99e0208f6571aa0f386600455dd..51c5c79543b24a4555d66bbd69c33cccb93795de 100644 --- a/briar-android/src/main/AndroidManifest.xml +++ b/briar-android/src/main/AndroidManifest.xml @@ -427,13 +427,16 @@ <activity android:name=".android.contact.add.remote.AddContactActivity" - android:theme="@style/BriarTheme" android:label="@string/add_contact_remotely_title_case" + android:launchMode="singleTask" + android:theme="@style/BriarTheme" android:windowSoftInputMode="stateHidden|adjustResize"> <intent-filter> - <action android:name="android.intent.action.VIEW" /> - <category android:name="android.intent.category.DEFAULT" /> - <category android:name="android.intent.category.BROWSABLE" /> + <action android:name="android.intent.action.VIEW"/> + + <category android:name="android.intent.category.DEFAULT"/> + <category android:name="android.intent.category.BROWSABLE"/> + <data android:scheme="briar"/> </intent-filter> <intent-filter> diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java index 1a6d55f754057010f7a474d0b360cc3e25149594..6b6068b7f9e9a1566ade35f9aea13664b479afc6 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java @@ -30,6 +30,7 @@ public class AddContactActivity extends BriarActivity implements @Inject ViewModelProvider.Factory viewModelFactory; + private AddContactViewModel viewModel; @Override public void injectActivity(ActivityComponent component) { @@ -46,9 +47,8 @@ public class AddContactActivity extends BriarActivity implements ab.setDisplayHomeAsUpEnabled(true); } - AddContactViewModel viewModel = - ViewModelProviders.of(this, viewModelFactory) - .get(AddContactViewModel.class); + viewModel = ViewModelProviders.of(this, viewModelFactory) + .get(AddContactViewModel.class); viewModel.getRemoteLinkEntered().observe(this, entered -> { if (entered != null && entered) { NicknameFragment f = new NicknameFragment(); @@ -58,33 +58,39 @@ public class AddContactActivity extends BriarActivity implements Intent i = getIntent(); if (i != null) { - String action = i.getAction(); - if (ACTION_SEND.equals(action) || ACTION_VIEW.equals(action)) { - String text = i.getStringExtra(EXTRA_TEXT); - if (text != null) { - if (viewModel.isValidRemoteContactLink(text)) { - viewModel.setRemoteHandshakeLink(text); - } else { - Toast.makeText(this, R.string.invalid_link, LENGTH_LONG) - .show(); - } - } - String uri = i.getDataString(); - if (uri != null) { - if (viewModel.isValidRemoteContactLink(uri)) { - viewModel.setRemoteHandshakeLink(uri); - } else { - Toast.makeText(this, R.string.invalid_link, LENGTH_LONG) - .show(); - } - } - } + onNewIntent(i); + setIntent(null); // don't keep the intent for configuration changes } + if (state == null) { showInitialFragment(new LinkExchangeFragment()); } } + @Override + protected void onNewIntent(Intent i) { + super.onNewIntent(i); + String action = i.getAction(); + if (ACTION_SEND.equals(action) || ACTION_VIEW.equals(action)) { + String text = i.getStringExtra(EXTRA_TEXT); + String uri = i.getDataString(); + if (text != null) handleIncomingLink(text); + else if (uri != null) handleIncomingLink(uri); + } + } + + private void handleIncomingLink(String link) { + if (link.equals(viewModel.getHandshakeLink().getValue())) { + Toast.makeText(this, R.string.intent_own_link, LENGTH_LONG) + .show(); + } else if (viewModel.isValidRemoteContactLink(link)) { + viewModel.setRemoteHandshakeLink(link); + } else { + Toast.makeText(this, R.string.invalid_link, LENGTH_LONG) + .show(); + } + } + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 83ffb5e82e6f0c45466cf2de992a5828c3ea1e03..6d633633d71f96ca0152661cf96f7c4c85b0a7da 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -200,6 +200,7 @@ <string name="own_link_error">Enter your contact\'s link, not your own</string> <string name="nickname_missing">Please enter a nickname</string> <string name="invalid_link">Invalid link</string> + <string name="intent_own_link">You opened your own link. Use the one of the contact you want to add!</string> <string name="missing_link">Please enter a link</string> <!-- This is a numeral indicating the first step in a series of screens --> <string name="step_1">1</string>