diff --git a/briar-android/AndroidManifest.xml b/briar-android/AndroidManifest.xml
index a83ed165c66079bd9b31286c558e3c36082443e9..f941a604ad678e49731fe01815cfed7ef5d3f70b 100644
--- a/briar-android/AndroidManifest.xml
+++ b/briar-android/AndroidManifest.xml
@@ -219,5 +219,10 @@
 				android:value=".android.contact.ContactListActivity"
 			/>
 		</activity>
+		<activity
+			android:name=".android.StartupFailureActivity"
+			android:logo="@drawable/logo"
+			android:label="@string/startup_failed_activity_title" >
+		</activity>
 	</application>
 </manifest>
diff --git a/briar-android/res/layout/activity_startup_failure.xml b/briar-android/res/layout/activity_startup_failure.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4ae08197a67875966b95e1b9ffeab275814b3f97
--- /dev/null
+++ b/briar-android/res/layout/activity_startup_failure.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="7dp">
+
+    <TextView
+        android:id="@+id/headlineView"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="@string/startup_failed_notification_title"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="7dp"
+        android:layout_marginBottom="7dp"/>
+
+    <TextView
+        android:id="@+id/errorView"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/startup_failed_notification_text"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml
index 3e0ed4508cb2ac54ee20416fe0f582db8af7cee5..d429004d6fda1ab03b661bf7524c71347607384c 100644
--- a/briar-android/res/values/strings.xml
+++ b/briar-android/res/values/strings.xml
@@ -17,6 +17,9 @@
     <string name="sign_in_button">Sign In</string>
     <string name="startup_failed_notification_title">Briar could not start</string>
     <string name="startup_failed_notification_text">You may need to reinstall Briar.</string>
+    <string name="startup_failed_activity_title">Briar Startup Failure</string>
+    <string name="startup_failed_db_error">For some reason, your Briar database is corrupted beyond repair. Your account, your data and all your contact connections are lost. Unfortunately, you need to reinstall Briar und set up a new account.</string>
+    <string name="startup_failed_service_error">Briar was unable to start a required plugin. Reinstalling Briar usually solves this problem. However, please note that you will then lose your account and all data associated with it since Briar is not using central servers to store your data on.</string>
     <string name="expiry_warning">This software has expired.\nPlease install a newer version.</string>
     <string name="contact_list_button">Contacts</string>
     <string name="delete_contact">Delete contact</string>
diff --git a/briar-android/src/org/briarproject/android/BriarService.java b/briar-android/src/org/briarproject/android/BriarService.java
index b5e5ea4e541594d679c19645505a0ec5b27c971c..65a03d3a68b8856c5a06e0c6f15d1c84515b766f 100644
--- a/briar-android/src/org/briarproject/android/BriarService.java
+++ b/briar-android/src/org/briarproject/android/BriarService.java
@@ -102,24 +102,27 @@ public class BriarService extends RoboService implements EventListener {
 				} else {
 					if (LOG.isLoggable(WARNING))
 						LOG.warning("Startup failed: " + result);
-					showStartupFailureNotification();
+					showStartupFailureNotification(result);
 					stopSelf();
 				}
 			}
 		}.start();
 	}
 
-	private void showStartupFailureNotification() {
+	private void showStartupFailureNotification(StartResult result) {
 		NotificationCompat.Builder b = new NotificationCompat.Builder(this);
 		b.setSmallIcon(android.R.drawable.stat_notify_error);
 		b.setContentTitle(getText(R.string.startup_failed_notification_title));
 		b.setContentText(getText(R.string.startup_failed_notification_text));
-		Intent i = new Intent(this, DashboardActivity.class);
-		i.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP);
-		b.setContentIntent(PendingIntent.getActivity(this, 0, i, 0));
+		Intent i = new Intent(this, StartupFailureActivity.class);
+		i.setFlags(FLAG_ACTIVITY_NEW_TASK);
+		i.putExtra("briar.START_RESULT", result);
+		i.putExtra("briar.FAILURE_NOTIFICATION_ID", FAILURE_NOTIFICATION_ID);
+		b.setContentIntent(PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT));
 		Object o = getSystemService(NOTIFICATION_SERVICE);
 		NotificationManager nm = (NotificationManager) o;
 		nm.notify(FAILURE_NOTIFICATION_ID, b.build());
+
 		// Bring the dashboard to the front to clear all other activities
 		i = new Intent(this, DashboardActivity.class);
 		i.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP);
diff --git a/briar-android/src/org/briarproject/android/StartupFailureActivity.java b/briar-android/src/org/briarproject/android/StartupFailureActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..a93a6354db380b426f592c7d7289a2db9ed21c90
--- /dev/null
+++ b/briar-android/src/org/briarproject/android/StartupFailureActivity.java
@@ -0,0 +1,44 @@
+package org.briarproject.android;
+
+import android.app.NotificationManager;
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.TextView;
+
+import org.briarproject.R;
+
+import roboguice.activity.RoboActivity;
+
+import static org.briarproject.api.lifecycle.LifecycleManager.StartResult;
+
+public class StartupFailureActivity extends RoboActivity {
+
+	@Override
+	public void onCreate(Bundle state) {
+		super.onCreate(state);
+
+		setContentView(R.layout.activity_startup_failure);
+		handleIntent(getIntent());
+	}
+
+	private void handleIntent(Intent i) {
+		StartResult result = (StartResult) i.getSerializableExtra("briar.START_RESULT");
+		int notificationId = i.getIntExtra("briar.FAILURE_NOTIFICATION_ID", -1);
+
+		// cancel notification
+		if (notificationId > -1) {
+			Object o = getSystemService(NOTIFICATION_SERVICE);
+			NotificationManager nm = (NotificationManager) o;
+			nm.cancel(notificationId);
+		}
+
+		// show proper error message
+		TextView view = (TextView) findViewById(R.id.errorView);
+		if (result.equals(StartResult.DB_ERROR)) {
+			view.setText(getText(R.string.startup_failed_db_error));
+		} else if (result.equals(StartResult.SERVICE_ERROR)) {
+			view.setText(getText(R.string.startup_failed_service_error));
+		}
+	}
+
+}