diff --git a/briar-android/AndroidManifest.xml b/briar-android/AndroidManifest.xml
index 7a367dbaa8f3a99e2943ab9bc9ef03dca6c8c5c2..78a4e81b8d471a742633700a3b2b3e11d743c38f 100644
--- a/briar-android/AndroidManifest.xml
+++ b/briar-android/AndroidManifest.xml
@@ -20,12 +20,10 @@
 	<uses-permission android:name="android.permission.BLUETOOTH" />
 	<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
 	<uses-permission android:name="android.permission.INTERNET" />
+	<uses-permission android:name="android.permission.READ_LOGS"/>
 	<uses-permission android:name="android.permission.VIBRATE" />
 	<!-- Since API 23, this is needed to add contacts via Bluetooth -->
 	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-	<!-- FIXME: Only needed for alpha and beta builds -->
-	<uses-permission android:name="android.permission.READ_LOGS"/>
-	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 
 	<application
 		android:name=".android.BriarApplication"
diff --git a/briar-android/src/org/briarproject/android/CrashReportActivity.java b/briar-android/src/org/briarproject/android/CrashReportActivity.java
index 01634602df3d6dce8bbff7aa32ffe41c7dfe5c0f..c157b15ddac5f384aa94bb439ee4204b58f38f43 100644
--- a/briar-android/src/org/briarproject/android/CrashReportActivity.java
+++ b/briar-android/src/org/briarproject/android/CrashReportActivity.java
@@ -8,7 +8,6 @@ import android.content.Intent;
 import android.content.res.Resources;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
-import android.net.Uri;
 import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.os.AsyncTask;
@@ -29,13 +28,10 @@ import org.briarproject.android.util.AndroidUtils;
 import org.briarproject.android.util.HorizontalBorder;
 import org.briarproject.android.util.LayoutUtils;
 import org.briarproject.android.util.ListLoadingProgressBar;
-import org.briarproject.api.android.AndroidExecutor;
 import org.briarproject.util.StringUtils;
 
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.PrintStream;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Collection;
@@ -44,8 +40,6 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Scanner;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
 import java.util.logging.Logger;
 import java.util.regex.Pattern;
 
@@ -53,8 +47,8 @@ import static android.bluetooth.BluetoothAdapter.SCAN_MODE_CONNECTABLE;
 import static android.bluetooth.BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE;
 import static android.content.Intent.ACTION_SEND;
 import static android.content.Intent.EXTRA_EMAIL;
-import static android.content.Intent.EXTRA_STREAM;
 import static android.content.Intent.EXTRA_SUBJECT;
+import static android.content.Intent.EXTRA_TEXT;
 import static android.net.ConnectivityManager.TYPE_MOBILE;
 import static android.net.ConnectivityManager.TYPE_WIFI;
 import static android.net.wifi.WifiManager.WIFI_STATE_ENABLED;
@@ -63,28 +57,25 @@ import static android.view.Gravity.CENTER_HORIZONTAL;
 import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
-import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.android.TestingConstants.SHARE_CRASH_REPORTS;
 import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
 import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP;
 import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
-public class CrashReportActivity extends AppCompatActivity implements OnClickListener {
+public class CrashReportActivity extends AppCompatActivity
+		implements OnClickListener {
 
 	private static final Logger LOG =
 			Logger.getLogger(CrashReportActivity.class.getName());
 
-	private final AndroidExecutor androidExecutor =
-			new AndroidExecutorImpl(getApplication());
-
 	private ScrollView scroll = null;
 	private ListLoadingProgressBar progress = null;
 	private LinearLayout status = null;
-	private File temp = null;
 
 	private volatile String stack = null;
 	private volatile int pid = -1;
+	private volatile BluetoothAdapter bt = null;
 
 	@Override
 	public void onCreate(Bundle state) {
@@ -93,6 +84,7 @@ public class CrashReportActivity extends AppCompatActivity implements OnClickLis
 		Intent i = getIntent();
 		stack = i.getStringExtra("briar.STACK_TRACE");
 		pid = i.getIntExtra("briar.PID", -1);
+		bt = BluetoothAdapter.getDefaultAdapter();
 
 		LinearLayout layout = new LinearLayout(this);
 		layout.setLayoutParams(MATCH_MATCH);
@@ -138,12 +130,6 @@ public class CrashReportActivity extends AppCompatActivity implements OnClickLis
 		refresh();
 	}
 
-	@Override
-	public void onDestroy() {
-		super.onDestroy();
-		if (temp != null) temp.delete();
-	}
-
 	@Override
 	public void onBackPressed() {
 		// show home screen, otherwise we are crashing again
@@ -322,19 +308,6 @@ public class CrashReportActivity extends AppCompatActivity implements OnClickLis
 		statusMap.put("Wi-Fi:", wifiStatus);
 
 		// Is Bluetooth available?
-		BluetoothAdapter bt = null;
-		try {
-			bt = androidExecutor.submit(new Callable<BluetoothAdapter>() {
-				public BluetoothAdapter call() throws Exception {
-					return BluetoothAdapter.getDefaultAdapter();
-				}
-			}).get();
-		} catch (InterruptedException e) {
-			LOG.warning("Interrupted while getting BluetoothAdapter");
-			Thread.currentThread().interrupt();
-		} catch (ExecutionException e) {
-			if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
-		}
 		boolean btAvailable = bt != null;
 		// Is Bluetooth enabled?
 		boolean btEnabled = bt != null && bt.isEnabled() &&
@@ -401,43 +374,19 @@ public class CrashReportActivity extends AppCompatActivity implements OnClickLis
 	}
 
 	private void share() {
-		new AsyncTask<Void, Void, Map<String, String>>() {
-
-			@Override
-			protected Map<String, String> doInBackground(Void... args) {
-				return getStatusMap();
-			}
-
-			@Override
-			protected void onPostExecute(Map<String, String> result) {
-				try {
-					File shared = Environment.getExternalStorageDirectory();
-					temp = File.createTempFile("crash", ".txt", shared);
-					if (LOG.isLoggable(INFO))
-						LOG.info("Writing to " + temp.getPath());
-					PrintStream p = new PrintStream(new FileOutputStream(temp));
-					for (Entry<String, String> e : result.entrySet()) {
-						p.println(e.getKey());
-						p.println(e.getValue());
-						p.println();
-					}
-					p.flush();
-					p.close();
-					sendEmail(Uri.fromFile(temp));
-				} catch (IOException e) {
-					if (LOG.isLoggable(WARNING))
-						LOG.log(WARNING, e.toString(), e);
-				}
-			}
-		}.execute();
-	}
-
-	private void sendEmail(Uri attachment) {
+		StringBuilder s = new StringBuilder();
+		for (Entry<String, String> e : getStatusMap().entrySet()) {
+			s.append(e.getKey());
+			s.append('\n');
+			s.append(e.getValue());
+			s.append("\n\n");
+		}
+		String body = s.toString();
 		Intent i = new Intent(ACTION_SEND);
 		i.setType("message/rfc822");
-		i.putExtra(EXTRA_EMAIL, new String[] { "briartest@gmail.com" });
+		i.putExtra(EXTRA_EMAIL, new String[] { "contact@briarproject.org" });
 		i.putExtra(EXTRA_SUBJECT, "Crash report");
-		i.putExtra(EXTRA_STREAM, attachment);
+		i.putExtra(EXTRA_TEXT, body);
 		startActivity(Intent.createChooser(i, "Send to developers"));
 	}
 }
diff --git a/briar-android/src/org/briarproject/android/TestingActivity.java b/briar-android/src/org/briarproject/android/TestingActivity.java
index ce770e7d9150925b4c596be6b437a216cc360c92..47c319cf01a99dcd335e253302c5491450dc411f 100644
--- a/briar-android/src/org/briarproject/android/TestingActivity.java
+++ b/briar-android/src/org/briarproject/android/TestingActivity.java
@@ -7,7 +7,6 @@ import android.content.Intent;
 import android.content.res.Resources;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
-import android.net.Uri;
 import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.os.AsyncTask;
@@ -29,7 +28,6 @@ import org.briarproject.android.util.HorizontalBorder;
 import org.briarproject.android.util.LayoutUtils;
 import org.briarproject.android.util.ListLoadingProgressBar;
 import org.briarproject.api.TransportId;
-import org.briarproject.api.android.AndroidExecutor;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.plugins.Plugin;
@@ -39,9 +37,7 @@ import org.briarproject.api.properties.TransportPropertyManager;
 import org.briarproject.util.StringUtils;
 
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.PrintStream;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Collection;
@@ -50,8 +46,6 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Scanner;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
 import java.util.logging.Logger;
 import java.util.regex.Pattern;
 
@@ -61,8 +55,8 @@ import static android.bluetooth.BluetoothAdapter.SCAN_MODE_CONNECTABLE;
 import static android.bluetooth.BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE;
 import static android.content.Intent.ACTION_SEND;
 import static android.content.Intent.EXTRA_EMAIL;
-import static android.content.Intent.EXTRA_STREAM;
 import static android.content.Intent.EXTRA_SUBJECT;
+import static android.content.Intent.EXTRA_TEXT;
 import static android.net.ConnectivityManager.TYPE_MOBILE;
 import static android.net.ConnectivityManager.TYPE_WIFI;
 import static android.net.wifi.WifiManager.WIFI_STATE_ENABLED;
@@ -71,7 +65,6 @@ import static android.view.Gravity.CENTER_HORIZONTAL;
 import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
-import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
 import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP;
@@ -82,7 +75,6 @@ public class TestingActivity extends BriarActivity implements OnClickListener {
 	private static final Logger LOG =
 			Logger.getLogger(TestingActivity.class.getName());
 
-	@Inject private AndroidExecutor androidExecutor;
 	@Inject private PluginManager pluginManager;
 	@Inject private LifecycleManager lifecycleManager;
 	@Inject private TransportPropertyManager transportPropertyManager;
@@ -90,12 +82,15 @@ public class TestingActivity extends BriarActivity implements OnClickListener {
 	private ListLoadingProgressBar progress = null;
 	private LinearLayout status = null;
 	private ImageButton refresh = null, share = null;
-	private File temp = null;
+
+	private volatile BluetoothAdapter bt = null;
 
 	@Override
 	public void onCreate(Bundle state) {
 		super.onCreate(state);
 
+		bt = BluetoothAdapter.getDefaultAdapter();
+
 		LinearLayout layout = new LinearLayout(this);
 		layout.setLayoutParams(MATCH_MATCH);
 		layout.setOrientation(VERTICAL);
@@ -148,12 +143,6 @@ public class TestingActivity extends BriarActivity implements OnClickListener {
 		refresh();
 	}
 
-	@Override
-	public void onDestroy() {
-		super.onDestroy();
-		if (temp != null) temp.delete();
-	}
-
 	public void onClick(View view) {
 		if (view == refresh) refresh();
 		else if (view == share) share();
@@ -325,19 +314,6 @@ public class TestingActivity extends BriarActivity implements OnClickListener {
 		statusMap.put("Wi-Fi:", wifiStatus);
 
 		// Is Bluetooth available?
-		BluetoothAdapter bt = null;
-		try {
-			bt = androidExecutor.submit(new Callable<BluetoothAdapter>() {
-				public BluetoothAdapter call() throws Exception {
-					return BluetoothAdapter.getDefaultAdapter();
-				}
-			}).get();
-		} catch (InterruptedException e) {
-			LOG.warning("Interrupted while getting BluetoothAdapter");
-			Thread.currentThread().interrupt();
-		} catch (ExecutionException e) {
-			if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
-		}
 		boolean btAvailable = bt != null;
 		// Is Bluetooth enabled?
 		boolean btEnabled = bt != null && bt.isEnabled() &&
@@ -453,43 +429,19 @@ public class TestingActivity extends BriarActivity implements OnClickListener {
 	}
 
 	private void share() {
-		new AsyncTask<Void, Void, Map<String, String>>() {
-
-			@Override
-			protected Map<String, String> doInBackground(Void... args) {
-				return getStatusMap();
-			}
-
-			@Override
-			protected void onPostExecute(Map<String, String> result) {
-				try {
-					File shared = Environment.getExternalStorageDirectory();
-					temp = File.createTempFile("debug", ".txt", shared);
-					if (LOG.isLoggable(INFO))
-						LOG.info("Writing to " + temp.getPath());
-					PrintStream p = new PrintStream(new FileOutputStream(temp));
-					for (Entry<String, String> e : result.entrySet()) {
-						p.println(e.getKey());
-						p.println(e.getValue());
-						p.println();
-					}
-					p.flush();
-					p.close();
-					sendEmail(Uri.fromFile(temp));
-				} catch (IOException e) {
-					if (LOG.isLoggable(WARNING))
-						LOG.log(WARNING, e.toString(), e);
-				}
-			}
-		}.execute();
-	}
-
-	private void sendEmail(Uri attachment) {
+		StringBuilder s = new StringBuilder();
+		for (Entry<String, String> e : getStatusMap().entrySet()) {
+			s.append(e.getKey());
+			s.append('\n');
+			s.append(e.getValue());
+			s.append("\n\n");
+		}
+		String body = s.toString();
 		Intent i = new Intent(ACTION_SEND);
 		i.setType("message/rfc822");
-		i.putExtra(EXTRA_EMAIL, new String[] { "briartest@gmail.com" });
-		i.putExtra(EXTRA_SUBJECT, "Debugging information");
-		i.putExtra(EXTRA_STREAM, attachment);
+		i.putExtra(EXTRA_EMAIL, new String[] { "contact@briarproject.org" });
+		i.putExtra(EXTRA_SUBJECT, "Testing report");
+		i.putExtra(EXTRA_TEXT, body);
 		startActivity(Intent.createChooser(i, "Send to developers"));
 	}
 }