diff --git a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java b/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java
index a29c0763cfeef226f300143f8223d2c5bf4b414a..1b1172c10523ba1dda044140d8ff741acf56238b 100644
--- a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java
+++ b/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java
@@ -1,7 +1,15 @@
 package net.sf.briar.android.invitation;
 
+import static java.util.logging.Level.WARNING;
+
+import java.util.concurrent.Executor;
+import java.util.logging.Logger;
+
 import net.sf.briar.api.android.ReferenceManager;
 import net.sf.briar.api.crypto.CryptoComponent;
+import net.sf.briar.api.db.DatabaseComponent;
+import net.sf.briar.api.db.DatabaseExecutor;
+import net.sf.briar.api.db.DbException;
 import net.sf.briar.api.invitation.InvitationListener;
 import net.sf.briar.api.invitation.InvitationState;
 import net.sf.briar.api.invitation.InvitationTask;
@@ -14,7 +22,12 @@ import com.google.inject.Inject;
 public class AddContactActivity extends RoboActivity
 implements InvitationListener {
 
+	private static final Logger LOG =
+			Logger.getLogger(AddContactActivity.class.getName());
+
 	@Inject private CryptoComponent crypto;
+	@Inject private DatabaseComponent db;
+	@Inject @DatabaseExecutor private Executor dbExecutor;
 	@Inject private InvitationTaskFactory invitationTaskFactory;
 	@Inject private ReferenceManager referenceManager;
 
@@ -191,6 +204,20 @@ implements InvitationListener {
 		}
 	}
 
+	void addContactAndFinish(final String nickname) {
+		dbExecutor.execute(new Runnable() {
+			public void run() {
+				try {
+					db.addContact(nickname);
+				} catch(DbException e) {
+					if(LOG.isLoggable(WARNING))
+						LOG.log(WARNING, e.toString(), e);
+				}
+			}
+		});
+		finish();
+	}
+
 	public void connectionSucceeded(final int localCode, final int remoteCode) {
 		runOnUiThread(new Runnable() {
 			public void run() {