diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
index e0ad7d8c9cb03e2c799b850cb01f3eb23071a3ff..4ce1d18b2e73749daa0016d7f059ebc41bd847fd 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
@@ -19,6 +19,7 @@ import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
+import android.widget.CheckBox;
 import android.widget.GridView;
 import android.widget.ImageView;
 import android.widget.TextView;
@@ -54,11 +55,11 @@ import static android.support.v4.widget.DrawerLayout.LOCK_MODE_LOCKED_CLOSED;
 import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
 import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_DOZE_WHITELISTING;
+import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_PASSWORD;
 import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.NO;
 import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.UPDATE;
 import static org.briarproject.briar.android.util.UiUtils.getDaysUntilExpiry;
 import static org.briarproject.briar.android.util.UiUtils.getDozeWhitelistingIntent;
-import static org.briarproject.briar.android.util.UiUtils.needsDozeWhitelisting;
 
 public class NavDrawerActivity extends BriarActivity implements
 		BaseFragmentListener, TransportStateListener,
@@ -151,7 +152,21 @@ public class NavDrawerActivity extends BriarActivity implements
 				if (expiry != NO) showExpiryWarning(expiry);
 			}
 		});
-		if (needsDozeWhitelisting(this)) requestDozeWhitelisting();
+	}
+
+	@Override
+	protected void onActivityResult(int request, int result, Intent data) {
+		super.onActivityResult(request, result, data);
+		if (request == REQUEST_PASSWORD && result == RESULT_OK) {
+			controller.askDozeWhitelisting(this,
+					new UiResultHandler<Boolean>(this) {
+						@Override
+						public void onResultUi(Boolean ask) {
+							if (!ask) return;
+							requestDozeWhitelisting();
+						}
+					});
+		}
 	}
 
 	private void exitIfStartupFailed(Intent intent) {
@@ -315,16 +330,24 @@ public class NavDrawerActivity extends BriarActivity implements
 
 	@TargetApi(23)
 	private void requestDozeWhitelisting() {
-		new AlertDialog.Builder(this, R.style.BriarDialogTheme)
-				.setMessage(R.string.setup_doze_intro)
-				.setPositiveButton(R.string.ok,
-						(dialog, which) -> {
-							Intent i = getDozeWhitelistingIntent(
-									NavDrawerActivity.this);
-							startActivityForResult(i,
-									REQUEST_DOZE_WHITELISTING);
-						})
-				.show();
+		AlertDialog.Builder b =
+				new AlertDialog.Builder(this, R.style.BriarDialogTheme);
+		b.setMessage(R.string.setup_doze_intro);
+		b.setView(R.layout.checkbox);
+		b.setPositiveButton(R.string.ok,
+				(dialog, which) -> {
+					Intent i = getDozeWhitelistingIntent(
+							NavDrawerActivity.this);
+					startActivityForResult(i, REQUEST_DOZE_WHITELISTING);
+				});
+		b.setNegativeButton(R.string.cancel,
+				(dialog, which) -> {
+					CheckBox checkBox = (CheckBox) ((AlertDialog) dialog)
+							.findViewById(R.id.checkbox);
+					if (checkBox.isChecked())
+						controller.doNotAskAgainForDozeWhiteListing();
+				});
+		b.show();
 	}
 
 	private void initializeTransports(LayoutInflater inflater) {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerController.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerController.java
index 4b7c5a52ab5a88ad488ec219e408e968b29973a2..21c220d6aafdcf9409f78c0219264c61f8c38699 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerController.java
@@ -1,5 +1,7 @@
 package org.briarproject.briar.android.navdrawer;
 
+import android.content.Context;
+
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.briar.android.controller.ActivityLifecycleController;
@@ -16,4 +18,9 @@ public interface NavDrawerController extends ActivityLifecycleController {
 
 	void expiryWarningDismissed();
 
+	void askDozeWhitelisting(final Context ctx,
+			final ResultHandler<Boolean> handler);
+
+	void doNotAskAgainForDozeWhiteListing();
+
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java
index 00a62705cf07933bf973e896bb454381702febe8..0e25288d005367543ec061e42bd19cb3a4b2a781 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java
@@ -1,6 +1,7 @@
 package org.briarproject.briar.android.navdrawer;
 
 import android.app.Activity;
+import android.content.Context;
 
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
@@ -32,6 +33,7 @@ import static org.briarproject.briar.android.navdrawer.NavDrawerController.Expir
 import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.SHOW;
 import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.UPDATE;
 import static org.briarproject.briar.android.settings.SettingsFragment.SETTINGS_NAMESPACE;
+import static org.briarproject.briar.android.util.UiUtils.needsDozeWhitelisting;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
@@ -42,6 +44,7 @@ public class NavDrawerControllerImpl extends DbControllerImpl
 			Logger.getLogger(NavDrawerControllerImpl.class.getName());
 	private static final String EXPIRY_DATE_WARNING = "expiryDateWarning";
 	private static final String EXPIRY_SHOW_UPDATE = "expiryShowUpdate";
+	private static final String DOZE_ASK_AGAIN = "dozeAskAgain";
 
 	private final PluginManager pluginManager;
 	private final SettingsManager settingsManager;
@@ -154,6 +157,47 @@ public class NavDrawerControllerImpl extends DbControllerImpl
 		});
 	}
 
+	@Override
+	public void askDozeWhitelisting(final Context ctx,
+			final ResultHandler<Boolean> handler) {
+		if (!needsDozeWhitelisting(ctx)) {
+			handler.onResult(false);
+			return;
+		}
+		runOnDbThread(new Runnable() {
+			@Override
+			public void run() {
+				try {
+					Settings settings =
+							settingsManager.getSettings(SETTINGS_NAMESPACE);
+					boolean ask = settings.getBoolean(DOZE_ASK_AGAIN, true);
+					handler.onResult(ask);
+				} catch (DbException e) {
+					if (LOG.isLoggable(WARNING))
+						LOG.log(WARNING, e.toString(), e);
+					handler.onResult(true);
+				}
+			}
+		});
+	}
+
+	@Override
+	public void doNotAskAgainForDozeWhiteListing() {
+		runOnDbThread(new Runnable() {
+			@Override
+			public void run() {
+				try {
+					Settings settings = new Settings();
+					settings.putBoolean(DOZE_ASK_AGAIN, false);
+					settingsManager.mergeSettings(settings, SETTINGS_NAMESPACE);
+				} catch (DbException e) {
+					if (LOG.isLoggable(WARNING))
+						LOG.log(WARNING, e.toString(), e);
+				}
+			}
+		});
+	}
+
 	@Override
 	public boolean isTransportRunning(TransportId transportId) {
 		Plugin plugin = pluginManager.getPlugin(transportId);
diff --git a/briar-android/src/main/res/layout/checkbox.xml b/briar-android/src/main/res/layout/checkbox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eb3dfe6a44b0f61eaff19e08dbb4970d7592d24e
--- /dev/null
+++ b/briar-android/src/main/res/layout/checkbox.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout
+	xmlns:android="http://schemas.android.com/apk/res/android"
+	android:layout_width="match_parent"
+	android:layout_height="wrap_content">
+
+	<CheckBox
+		android:id="@+id/checkbox"
+		android:layout_width="match_parent"
+		android:layout_height="wrap_content"
+		android:layout_marginLeft="@dimen/margin_activity_horizontal"
+		android:layout_marginTop="@dimen/margin_activity_vertical"
+		android:checked="false"
+		android:text="@string/don_t_ask_again"/>
+
+</FrameLayout>
diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml
index 98c44d56c0f9327f86d1290b7885f891414b8630..e9d5d2ef15c7d543b56f4d7e825cb4bf7db91116 100644
--- a/briar-android/src/main/res/values/strings.xml
+++ b/briar-android/src/main/res/values/strings.xml
@@ -19,6 +19,7 @@
 	<string name="passwords_do_not_match">Passwords do not match</string>
 	<string name="create_account_button">Create Account</string>
 	<string name="more_info">More Information</string>
+	<string name="don_t_ask_again">Don\'t ask again</string>
 
 	<!-- Login -->
 	<string name="enter_password">Enter your password:</string>