briar issueshttps://code.briarproject.org/briar/briar/-/issues2019-11-06T09:47:51Zhttps://code.briarproject.org/briar/briar/-/issues/1485FileUriExposedException for custom notification sound2019-11-06T09:47:51ZakwizgranFileUriExposedException for custom notification sound* Android version: 7.1.2
* Phone model: Xiaomi Redmi 5A (riva)
* Briar version: 1.0.1 (1833efa)
Stacktrace:
```
android.os.FileUriExposedException: file:///storage/emulated/0/Ringtones/Unlock.wav exposed beyond app through Notification....* Android version: 7.1.2
* Phone model: Xiaomi Redmi 5A (riva)
* Briar version: 1.0.1 (1833efa)
Stacktrace:
```
android.os.FileUriExposedException: file:///storage/emulated/0/Ringtones/Unlock.wav exposed beyond app through Notification.sound
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1796)
at android.net.Uri.checkFileUriExposed(Uri.java:2346)
at android.app.NotificationManager.notifyAsUser(NotificationManager.java:300)
at android.app.NotificationManager.notify(NotificationManager.java:284)
at android.app.NotificationManager.notify(NotificationManager.java:268)
at org.briarproject.briar.android.AndroidNotificationManagerImpl.updateGroupMessageNotification(AndroidNotificationManagerImpl.java:439)
at org.briarproject.briar.android.AndroidNotificationManagerImpl.lambda$showGroupMessageNotification$5$AndroidNotificationManagerImpl(AndroidNotificationManagerImpl.java:383)
at org.briarproject.briar.android.AndroidNotificationManagerImpl$$Lambda$6.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6205)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
```
I don't know why StrictMode threw this exception rather than just logging it, but judging by the package name this was a release build.Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1454ArrayIndexOutOfBoundsException in SettingsActivity2019-11-06T09:47:05ZakwizgranArrayIndexOutOfBoundsException in SettingsActivityI'm guessing this may be related to removing the system default option for the dark theme.
* Android version: 8.0.0
* Phone model: Samsung SM-G965F (star2ltexx)
* Briar version: 1.1.4
Stacktrace:
```
java.lang.ArrayIndexOutOfBoundsExce...I'm guessing this may be related to removing the system default option for the dark theme.
* Android version: 8.0.0
* Phone model: Samsung SM-G965F (star2ltexx)
* Briar version: 1.1.4
Stacktrace:
```
java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
at android.support.v7.preference.ListPreference.getEntry(ListPreference.java:229)
at android.support.v7.preference.ListPreference.getSummary(ListPreference.java:174)
at android.support.v7.preference.Preference.onBindViewHolder(Preference.java:584)
at android.support.v7.preference.PreferenceGroupAdapter.onBindViewHolder(PreferenceGroupAdapter.java:381)
at android.support.v7.preference.PreferenceGroupAdapter.onBindViewHolder(PreferenceGroupAdapter.java:45)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823)
at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6019)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3641)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4194)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1544)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:444)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:444)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1544)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:944)
at android.view.View.layout(View.java:20822)
at android.view.ViewGroup.layout(ViewGroup.java:6401)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2948)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2635)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1779)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7810)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
```Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1435[android] Migrate to HtmlCompat2020-08-14T11:32:43ZTorsten Grote[android] Migrate to HtmlCompat`UiUtils#getSpanned()` should use the new HtmlCompat.
https://commonsware.com/blog/2018/05/29/at-last-htmlcompat.html`UiUtils#getSpanned()` should use the new HtmlCompat.
https://commonsware.com/blog/2018/05/29/at-last-htmlcompat.htmlAndroid 1.2https://code.briarproject.org/briar/briar/-/issues/1405When emoji drawer is open, clicking text field should show keyboard2019-10-28T12:16:31ZakwizgranWhen emoji drawer is open, clicking text field should show keyboard* Android version: 8.0.0
* Briar version: 1.0.13
* Phone model: Sony Xperia X Compact
* User feedback: "Sony X compact, Android 8.0, BlackBerry Keyboard, Briar-master with new emoji. In conversation click on emoji icon -> open BB Keyboar...* Android version: 8.0.0
* Briar version: 1.0.13
* Phone model: Sony Xperia X Compact
* User feedback: "Sony X compact, Android 8.0, BlackBerry Keyboard, Briar-master with new emoji. In conversation click on emoji icon -> open BB Keyboard and emoji drawer (not side by side, BB is open behind emoji drawer) -> click on Type message and do nothing (expect show keyboard)."
I'm assuming "click on Type message" means click on the keyboard icon next to the text field. The soft keyboard should be shown in this case, even if there's a custom keyboard app. But possibly the user expects that clicking on the text field itself should hide the emoji drawer and show the keyboard again?Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1399IllegalArgumentException after stopping UnlockActivity2022-06-13T14:54:58ZakwizgranIllegalArgumentException after stopping UnlockActivity* Android version: 8.1.0
* Briar version: 1.1.1 (9476782)
* Phone model: Xiaomi Mi A1 (tissot)
* User feedback: "Blank screen."
Stacktrace:
```
java.lang.IllegalArgumentException: View=DecorView@47d51c6[] not attached to window manager
...* Android version: 8.1.0
* Briar version: 1.1.1 (9476782)
* Phone model: Xiaomi Mi A1 (tissot)
* User feedback: "Blank screen."
Stacktrace:
```
java.lang.IllegalArgumentException: View=DecorView@47d51c6[] not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:485)
at android.view.WindowManagerGlobal.updateViewLayout(WindowManagerGlobal.java:380)
at android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:101)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3728)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:172)
at android.app.ActivityThread.main(ActivityThread.java:6590)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
```
The log seems to show navigation between screens with BriarRecyclerViews leading up to the crash:
```
09-25 14:23:10.402 I/RenewableWakeLock: Acquiring wake lock LocationManagerService
09-25 14:23:10.402 I/RenewableWakeLock: Already acquired
09-25 14:23:35.872 I/Poller: Polling plugin org.briarproject.bramble.tor
09-25 14:23:56.187 I/BriarRecyclerView: Adding Handler Callback
09-25 14:23:56.238 I/BriarRecyclerView: Removing Handler Callback
09-25 14:23:56.310 I/BriarRecyclerView: Adding Handler Callback
09-25 14:23:56.554 I/BriarRecyclerView: Removing Handler Callback
09-25 14:23:58.197 I/BriarRecyclerView: Adding Handler Callback
09-25 14:24:01.792 I/BriarRecyclerView: Removing Handler Callback
09-25 14:24:03.169 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-25 14:24:03.841 I/BriarRecyclerView: Adding Handler Callback
```
Judging by the short stacktrace, this looks like a platform bug without a place where we could insert a workaround. Therefore I'm not adding this to the current milestone unless we get more reports.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1371Recreate code_cache directory after deleting account2020-11-16T10:37:11ZakwizgranRecreate code_cache directory after deleting accountWe already recreate the `cache` directory after deleting the account because some OpenGL drivers expect it to exist. Apparently we should do the same for the `code_cache` directory. This comes from a Sony Xperia Z3 Compact (Android 6.0.1...We already recreate the `cache` directory after deleting the account because some OpenGL drivers expect it to exist. Apparently we should do the same for the `code_cache` directory. This comes from a Sony Xperia Z3 Compact (Android 6.0.1):
```
08-30 00:33:24.161 E/libEGL (14478): error creating cache file /data/user/0/org.briarproject.briar.android.debug/code_cache/com.android.opengl.shaders_cache: No such file or directory (2)
```Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1367DB Store header is corrupt2020-03-10T15:03:16ZTorsten GroteDB Store header is corruptWhen using Android emulator 27.3.9.0 with an API 28 Google APIs Intel x86 Atom System Image Revision 4 or 5, creating a new account after "forgetting the password" causes a `org.h2.jdbc.JdbcSQLException: Encryption error in file null` ex...When using Android emulator 27.3.9.0 with an API 28 Google APIs Intel x86 Atom System Image Revision 4 or 5, creating a new account after "forgetting the password" causes a `org.h2.jdbc.JdbcSQLException: Encryption error in file null` exception when reinstalling with Android Studio while still signed in.
```
I/AndroidAccountManager: No database key in preferences
I/AccountManagerImpl: Found database key in primary file
I/AndroidAccountManager: No database key in preferences
I/AccountManagerImpl: Found database key in primary file
I/BriarService: Created
I/LifecycleManagerImpl: Starting services
W/LifecycleManagerImpl: org.briarproject.bramble.api.db.DbException: org.h2.jdbc.JdbcSQLException: Encryption error in file null [90049-192]
org.briarproject.bramble.api.db.DbException: org.h2.jdbc.JdbcSQLException: Encryption error in file null [90049-192]
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:495)
at org.briarproject.bramble.db.JdbcDatabase.open(JdbcDatabase.java:340)
at org.briarproject.bramble.db.H2Database.open(H2Database.java:54)
at org.briarproject.bramble.db.DatabaseComponentImpl.open(DatabaseComponentImpl.java:109)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl.startServices(LifecycleManagerImpl.java:108)
at org.briarproject.briar.android.BriarService.lambda$onCreate$0$BriarService(BriarService.java:134)
at org.briarproject.briar.android.BriarService$$Lambda$0.run(Unknown Source:20)
at java.lang.Thread.run(Thread.java:764)
Caused by: org.h2.jdbc.JdbcSQLException: Encryption error in file null [90049-192]
at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:182)
at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:167)
at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:99)
at org.h2.engine.Database.getPageStore(Database.java:2463)
at org.h2.engine.Database.open(Database.java:692)
at org.h2.engine.Database.openDatabase(Database.java:270)
at org.h2.engine.Database.<init>(Database.java:264)
at org.h2.engine.Engine.openSession(Engine.java:64)
at org.h2.engine.Engine.openSession(Engine.java:176)
at org.h2.engine.Engine.createSessionAndValidate(Engine.java:154)
at org.h2.engine.Engine.createSession(Engine.java:137)
at org.h2.engine.Engine.createSession(Engine.java:27)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:118)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:102)
at org.h2.Driver.connect(Driver.java:72)
at java.sql.DriverManager.getConnection(DriverManager.java:569)
at java.sql.DriverManager.getConnection(DriverManager.java:191)
at org.briarproject.bramble.db.H2Database.createConnection(H2Database.java:101)
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:484)
at org.briarproject.bramble.db.JdbcDatabase.open(JdbcDatabase.java:340)
at org.briarproject.bramble.db.H2Database.open(H2Database.java:54)
at org.briarproject.bramble.db.DatabaseComponentImpl.open(DatabaseComponentImpl.java:109)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl.startServices(LifecycleManagerImpl.java:108)
at org.briarproject.briar.android.BriarService.lambda$onCreate$0$BriarService(BriarService.java:134)
at org.briarproject.briar.android.BriarService$$Lambda$0.run(Unknown Source:20)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.IllegalStateException: Store header is corrupt: split:30:/data/data/org.briarproject.briar.android.debug/app_db/db.mv.db [1.4.192/6]
at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:773)
at org.h2.mvstore.MVStore.readStoreHeader(MVStore.java:605)
at org.h2.mvstore.MVStore.<init>(MVStore.java:355)
at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2893)
at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:154)
at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:99)
at org.h2.engine.Database.getPageStore(Database.java:2463)
at org.h2.engine.Database.open(Database.java:692)
at org.h2.engine.Database.openDatabase(Database.java:270)
at org.h2.engine.Database.<init>(Database.java:264)
at org.h2.engine.Engine.openSession(Engine.java:64)
at org.h2.engine.Engine.openSession(Engine.java:176)
at org.h2.engine.Engine.createSessionAndValidate(Engine.java:154)
at org.h2.engine.Engine.createSession(Engine.java:137)
at org.h2.engine.Engine.createSession(Engine.java:27)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:118)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:102)
at org.h2.Driver.connect(Driver.java:72)
at java.sql.DriverManager.getConnection(DriverManager.java:569)
at java.sql.DriverManager.getConnection(DriverManager.java:191)
at org.briarproject.bramble.db.H2Database.createConnection(H2Database.java:101)
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:484)
at org.briarproject.bramble.db.JdbcDatabase.open(JdbcDatabase.java:340)
at org.briarproject.bramble.db.H2Database.open(H2Database.java:54)
at org.briarproject.bramble.db.DatabaseComponentImpl.open(DatabaseComponentImpl.java:109)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl.startServices(LifecycleManagerImpl.java:108)
at org.briarproject.briar.android.BriarService.lambda$onCreate$0$BriarService(BriarService.java:134)
at org.briarproject.briar.android.BriarService$$Lambda$0.run(Unknown Source:20)
at java.lang.Thread.run(Thread.java:764)
W/BriarService: Startup failed: DB_ERROR
```Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1348Briar does not care if bluetooth is used by other apps2020-11-16T10:36:46ZmicressorBriar does not care if bluetooth is used by other appsI have
* [X] searched for open and closed issues
----
**Steps to reproduce:**
1. Listen to music via bluetooth
2. Select logoff on Briar
**Current behavior:**
Briar switches off the Bluetooth on the device.
**Expected behavior:**
Br...I have
* [X] searched for open and closed issues
----
**Steps to reproduce:**
1. Listen to music via bluetooth
2. Select logoff on Briar
**Current behavior:**
Briar switches off the Bluetooth on the device.
**Expected behavior:**
Briar should not shutdown bluetooth, if it is used by other apps.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1271Update manual for Tor bridges2018-10-09T14:10:00ZakwizgranUpdate manual for Tor bridgesSubtask of #647.Subtask of #647.Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1270User testing for Tor bridges2018-10-23T09:44:41ZakwizgranUser testing for Tor bridgesSubtask of #647.Subtask of #647.Android 1.2Renata GegajRenata Gegaj2018-09-24https://code.briarproject.org/briar/briar/-/issues/1248User testing for account sign-in improvements2018-10-10T09:34:14ZakwizgranUser testing for account sign-in improvementsSubtask of #1245.Subtask of #1245.Android 1.2Renata GegajRenata Gegajhttps://code.briarproject.org/briar/briar/-/issues/1236Update manual for adding contacts remotely2019-10-09T12:16:03ZakwizgranUpdate manual for adding contacts remotelySubtask of #1230.Subtask of #1230.Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1234Implement UX for adding contacts remotely2019-05-13T09:04:25ZakwizgranImplement UX for adding contacts remotelySubtask of #1230.Subtask of #1230.Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1233Design UX for adding contacts remotely2019-04-25T15:28:10ZakwizgranDesign UX for adding contacts remotelySubtask of #1230.Subtask of #1230.Android 1.2Elio Qoshielio@ura.designElio Qoshielio@ura.designhttps://code.briarproject.org/briar/briar/-/issues/1232Implement protocol for adding contacts remotely2019-06-10T14:15:56ZakwizgranImplement protocol for adding contacts remotelySubtask of #1230.Subtask of #1230.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1210Stale items in contact list2019-10-16T16:20:55ZakwizgranStale items in contact listOn the Nexus 5X I sometimes see stale duplicate items in the contact list when returning from a conversation:
![device-2018-04-27-151948](/uploads/d0744fc2e84cdf3f37a05c77b5fce746/device-2018-04-27-151948.png)On the Nexus 5X I sometimes see stale duplicate items in the contact list when returning from a conversation:
![device-2018-04-27-151948](/uploads/d0744fc2e84cdf3f37a05c77b5fce746/device-2018-04-27-151948.png)Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1193Hotspot local coms flakey2020-11-19T10:05:15ZPratiwirHotspot local coms flakeyI tried turning off mobile data and wifi router then turned on android hotspot for two other devices with briar beta to connect to, so three in all. The host device could see one acccount active, but not the other. The two users could se...I tried turning off mobile data and wifi router then turned on android hotspot for two other devices with briar beta to connect to, so three in all. The host device could see one acccount active, but not the other. The two users could see eachother, one user couldn't see the host account.
It seems the devices aren't reliably seeing eachother.
Also as another related issue, none of the bluetooth links worked for chats at all without wifi, even though they were paired. I think the manual needs more detail on how to get this to work.Android 1.2https://code.briarproject.org/briar/briar/-/issues/1188Close redundant transport connections2020-10-06T16:48:59ZakwizgranClose redundant transport connectionsIt's not unusual to have multiple connections to a given contact open at the same time, especially if both users sign in or activate a transport at roughly the same time. In some cases these connections may be considered redundant. For e...It's not unusual to have multiple connections to a given contact open at the same time, especially if both users sign in or activate a transport at roughly the same time. In some cases these connections may be considered redundant. For example, a Tor connection may be considered redundant if we also have a LAN connection, and if we have incoming and outgoing connections over the same duplex transport, one of them is redundant.
Closing redundant connections would save battery and bandwidth. Performance tests also suggest that redundant connections may slow down sync by increasing the number of database queries triggered by each sync-related event. Syncing 30 forum posts from an Xperia Z3 Compact to a Moto E3 takes about 10% longer when there are four Tor and LAN connections than when there's a single Bluetooth connection, because the DB rather than the network is the bottleneck.
The tricky part is choosing which connections to close, such that the two endpoints don't choose different connections and end up closing too many.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1185Move native binary extraction to the Installer2020-11-16T10:35:40ZJulian DehmMove native binary extraction to the InstallerManually extracting the tor binary to the writable data directory could be dangerous. We should investigate the option to bundle the binary in a way that it gets extracted by the installer to a read-only directory as described here: http...Manually extracting the tor binary to the writable data directory could be dangerous. We should investigate the option to bundle the binary in a way that it gets extracted by the installer to a read-only directory as described here: https://twitter.com/CopperheadOS/status/917924329857474560
This might be done by disguising the binary as library file and moving it to jniLibs/<ABI>/tor.so
This would also allow us to use `targetSandboxVersion="2"`for improved security.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1142Use alarms to schedule essential tasks2020-08-14T09:48:13ZakwizgranUse alarms to schedule essential tasksWe use a ScheduledExecutorService to schedule essential tasks such as key rotation and polling for connections. When Tor is disabled or doesn't have internet connectivity, the Tor plugin's wake lock is released and the device may sleep o...We use a ScheduledExecutorService to schedule essential tasks such as key rotation and polling for connections. When Tor is disabled or doesn't have internet connectivity, the Tor plugin's wake lock is released and the device may sleep or doze. To ensure that essential tasks run during sleep or doze, we should schedule them using alarms.Android 1.2akwizgranakwizgran