Disabling Bluetooth adapter on UI thread violates Strict Mode
On the Galaxy Nexus (Android 4.3), BluetoothAdapter#disable() results in a disk write, which violates strict mode. Maybe we should run the enable() and disable() calls on the AndroidExecutor?
12-17 12:19:33.868 29626-29626/org.briarproject D/StrictMode: StrictMode policy violation; ~duration=319 ms: android.os.StrictMode$StrictModeDiskWriteViolation: policy=287 violation=1
at android.os.StrictMode$AndroidBlockGuardPolicy.onWriteToDisk(StrictMode.java:1097)
at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1043)
at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:779)
at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
at com.android.providers.settings.SettingsProvider.insertForUser(SettingsProvider.java:914)
at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:634)
at android.content.ContentProvider$Transport.call(ContentProvider.java:279)
at android.provider.Settings$NameValueCache.putStringForUser(Settings.java:818)
at android.provider.Settings$Global.putStringForUser(Settings.java:5529)
at android.provider.Settings$Global.putString(Settings.java:5519)
at android.provider.Settings$Global.putInt(Settings.java:5607)
at com.android.server.BluetoothManagerService.persistBluetoothSetting(BluetoothManagerService.java:255)
at com.android.server.BluetoothManagerService.disable(BluetoothManagerService.java:439)
at android.bluetooth.IBluetoothManager$Stub.onTransact(IBluetoothManager.java:116)
at android.os.Binder.execTransact(Binder.java:388)
at dalvik.system.NativeStart.run(Native Method)
# via Binder call with stack:
android.os.StrictMode$LogStackTrace
at android.os.StrictMode.readAndHandleBinderCallViolations(StrictMode.java:1687)
at android.os.Parcel.readExceptionCode(Parcel.java:1413)
at android.os.Parcel.readException(Parcel.java:1382)
at android.bluetooth.IBluetoothManager$Stub$Proxy.disable(IBluetoothManager.java:286)
at android.bluetooth.BluetoothAdapter.disable(BluetoothAdapter.java:550)
at org.briarproject.android.SettingsActivity.onClick(SettingsActivity.java:297)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)