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>