briar issueshttps://code.briarproject.org/groups/briar/-/issues2019-11-12T13:45:59Zhttps://code.briarproject.org/briar/briar/-/issues/1434Implement backend for sending and receiving image attachments2019-11-12T13:45:59ZTorsten GroteImplement backend for sending and receiving image attachments### Receiving Image Attachments
Private message headers will include a list of attachments, and there will be a `MessagingManager` method for loading an attachment, which will include the attachment data as a `ByteBuffer`, later to be c...### Receiving Image Attachments
Private message headers will include a list of attachments, and there will be a `MessagingManager` method for loading an attachment, which will include the attachment data as a `ByteBuffer`, later to be converted to an `InputStream` if we find that loading images into ByteBuffers won't scale.
This implies that private message headers (in the sense of headers belonging to the private messaging client) will no longer correspond to the root class `PrivateMessageHeader` (from which all one-to-one headers currently inherit). The root class may need to be renamed, and some refactoring of the code that handles that hierarchy will be needed.
### Sending Image Attachments
*TODO*: MessagingManager API for creating local messages with optional attachmentsAndroid 1.3Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1433BdfReaderImpl has undefined behaviour for strings with illegal byte sequences2018-10-30T13:58:53ZakwizgranBdfReaderImpl has undefined behaviour for strings with illegal byte sequencesBdfReaderImpl uses the `String(byte[] bytes, int offset, int length, String charsetName)` constructor to convert UTF-8 byte arrays into strings. The [javadoc](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#String-byte:A-...BdfReaderImpl uses the `String(byte[] bytes, int offset, int length, String charsetName)` constructor to convert UTF-8 byte arrays into strings. The [javadoc](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#String-byte:A-int-int-java.lang.String-) says "The behavior of this constructor when the given bytes are not valid in the given charset is unspecified. The CharsetDecoder class should be used when more control over the decoding process is required."
We have a `StringUtils.toUtf8(byte[] bytes)` method with well-defined behaviour for this situation (illegal byte sequences are ignored), which we should probably be using here (and fuzz-testing).Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1428Log messages with level FINE aren't recorded in Android's system log2019-10-09T12:17:59ZakwizgranLog messages with level FINE aren't recorded in Android's system logLog messages with level FINE (such as timing measurements) aren't being recorded in Android's system log. These messages should be recorded on debug and beta builds, where the root logger's log level is set to FINE.
The messages are rec...Log messages with level FINE (such as timing measurements) aren't being recorded in Android's system log. These messages should be recorded on debug and beta builds, where the root logger's log level is set to FINE.
The messages are recorded in our own internal log, as expected, so they're included in crash reports and feedback from debug and beta builds.Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1427Keep a changelog2018-11-22T11:35:24ZRobert PollakKeep a changelogPlease keep a changelog, to make it easier for users to see what notable changes have been made, before installing a new Briar version.
F-Droid can then link to this changelog on the app page.Please keep a changelog, to make it easier for users to see what notable changes have been made, before installing a new Briar version.
F-Droid can then link to this changelog on the app page.Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1426Feedback data is hard to read in preview screen2019-06-18T16:52:08ZakwizgranFeedback data is hard to read in preview screenSince [upgrading ACRA](https://code.briarproject.org/briar/briar/commit/b972d1fc13570fa6258048d5e8a429f9882b8ef6) the contents of crash reports and feedback are shown in the preview as blobs of JSON rather than key-value pairs, which mak...Since [upgrading ACRA](https://code.briarproject.org/briar/briar/commit/b972d1fc13570fa6258048d5e8a429f9882b8ef6) the contents of crash reports and feedback are shown in the preview as blobs of JSON rather than key-value pairs, which makes them harder to read.
There also seems to be an issue with the scroll view cutting off the bottom of the content.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1423IllegalStateException when key agreement fails2021-01-13T16:12:06ZakwizgranIllegalStateException when key agreement fails* Android version: 5.1.1
* Briar version: 1.1.1 (9476782)
* Phone model: Samsung SM-J200G (j2ltedd)
Stacktrace:
```
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app...* Android version: 5.1.1
* Briar version: 1.1.1 (9476782)
* Phone model: Samsung SM-J200G (j2ltedd)
Stacktrace:
```
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:2053)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:2079)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:678)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:632)
at org.briarproject.briar.android.activity.BaseActivity.showNextFragment(BaseActivity.java:147)
at org.briarproject.briar.android.keyagreement.KeyAgreementActivity.showErrorFragment(KeyAgreementActivity.java:193)
at org.briarproject.briar.android.keyagreement.ContactExchangeActivity.keyAgreementFailed(ContactExchangeActivity.java:107)
at org.briarproject.briar.android.keyagreement.KeyAgreementFragment.lambda$keyAgreementFailed$2$KeyAgreementFragment(KeyAgreementFragment.java:283)
at org.briarproject.briar.android.keyagreement.KeyAgreementFragment$$Lambda$2.run(Unknown Source)
at org.briarproject.briar.android.fragment.BaseFragment.lambda$runOnUiThreadUnlessDestroyed$0$BaseFragment(BaseFragment.java:90)
at org.briarproject.briar.android.fragment.BaseFragment$$Lambda$0.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
```
Looks like we should check the lifecycle state in `BaseActivity#showNextFragment()` or `KeyAgreementActivity#showErrorFragment()`.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1421Contact list is shown when opening app during DB migration2022-05-26T15:44:20ZakwizgranContact list is shown when opening app during DB migrationSteps to reproduce:
* Use the long-migration branch, which adds a fake 60-second DB migration at every startup
* Sign into Briar
* While the fake migration is running, send Briar to the background or turn the screen off
* Relaunch Briar...Steps to reproduce:
* Use the long-migration branch, which adds a fake 60-second DB migration at every startup
* Sign into Briar
* While the fake migration is running, send Briar to the background or turn the screen off
* Relaunch Briar from the status bar or lock screen notification (on some Android versions this requires opening the notification drawer)
* Expected: The migration screen is shown
* Actual: The contact list is shown with a progress wheel. The nav drawer can be opened. Backing out of the contact list or signing out via the nav drawer shows the migration screen againAndroid 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1420TorPlugin not updating status when changing setting2018-10-15T13:04:37ZTorsten GroteTorPlugin not updating status when changing settingThe TorPlugin is not updating its status when bridges are enabled or disabled - the icon still shows the plugin as being connected. We should reset the status when enabling/disabling bridges and wait for Tor to reconnect.The TorPlugin is not updating its status when bridges are enabled or disabled - the icon still shows the plugin as being connected. We should reset the status when enabling/disabling bridges and wait for Tor to reconnect.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1418Managing pluggable transports2019-02-19T17:38:04ZTorsten GroteManaging pluggable transportsThis ticket is to write code for installing the transport, starting if it necessary, activate it based on the user's location, etc.This ticket is to write code for installing the transport, starting if it necessary, activate it based on the user's location, etc.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1417Integrate pluggable transport binaries into Briar2018-12-19T12:23:55ZTorsten GroteIntegrate pluggable transport binaries into BriarThe artifact generated by #1416 should be integrated in Briar, so obfs4 bridges can be used whenever needed by the user's location.The artifact generated by #1416 should be integrated in Briar, so obfs4 bridges can be used whenever needed by the user's location.Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1416Build pluggable transport binaries for Android2018-10-26T12:52:22ZTorsten GroteBuild pluggable transport binaries for AndroidWe would focus on **obfs4** as it should still work in countries like Iran or China (if the bridge host itself is not blocked via TCP). Also, obfs2 and 3 are obsolete, and scramblesuit has no advantages over obfs4 that we know of.
The f...We would focus on **obfs4** as it should still work in countries like Iran or China (if the bridge host itself is not blocked via TCP). Also, obfs2 and 3 are obsolete, and scramblesuit has no advantages over obfs4 that we know of.
The first task is to work out whether we need a standalone obfs4 executable or a go library. If we use the library, do we also need the dispatcher so tor can control the transport? Then we'll know whether our upstream is [yawning's obfs4](https://gitweb.torproject.org/pluggable-transports/obfs4.git/) or [the shapeshifter-transports library](https://github.com/OperatorFoundation/shapeshifter-transports).
There's also Guardian Project's [Android Pluggable Transports](https://github.com/guardianproject/AndroidPluggableTransports) and OpenPriv's [Android Go Mobile Builder](https://github.com/OpenPriv/android-go-mobile) that might be relevant.
The extra artifact that gets added to Briar should be reproducible: How to [Reproduce Go binaries byte-by-byte](https://blog.filippo.io/reproducing-go-binaries-byte-by-byte/)Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1413Contact list empty state message sometimes fails to appear2019-03-08T10:01:01ZakwizgranContact list empty state message sometimes fails to appearI've seen this intermittently on the Moto G (Android 5.1). The latest case happened after creating a new account - I'm not sure whether that's always been the case in the past. Turning the screen off and on again sometimes but not always...I've seen this intermittently on the Moto G (Android 5.1). The latest case happened after creating a new account - I'm not sure whether that's always been the case in the past. Turning the screen off and on again sometimes but not always causes the empty state message to appear.
![device-2018-10-08-125730](/uploads/c22b346d2de99d58554752bc374f9902/device-2018-10-08-125730.png)
If I find reliable steps to reproduce the bug I'll add them below.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1409Crash Screen is not localized2018-10-03T11:42:55ZTorsten GroteCrash Screen is not localizedSteps to reproduce:
1. Change Language to Arabic in Settings of `Briar Debug`
2. Sign out
3. Sign back in
4. Go to Settings -> Testing -> Crash
5. See the crash screen in English instead of ArabicSteps to reproduce:
1. Change Language to Arabic in Settings of `Briar Debug`
2. Sign out
3. Sign back in
4. Go to Settings -> Testing -> Crash
5. See the crash screen in English instead of ArabicSponsor 2.3Torsten GroteTorsten Grotehttps://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/1403IllegalStateException during setup on Anbox2018-11-01T12:12:23ZakwizgranIllegalStateException during setup on Anbox* Android version: 7.1.1
* Briar version: 1.0.1 (1833efa)
* Phone model: Anbox (anbox_x86_64)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.briar.android.login.SetupControllerImpl.createAccount(SetupControl...* Android version: 7.1.1
* Briar version: 1.0.1 (1833efa)
* Phone model: Anbox (anbox_x86_64)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.briar.android.login.SetupControllerImpl.createAccount(SetupControllerImpl.java:88)
at org.briarproject.briar.android.login.SetupControllerImpl.createAccount(SetupControllerImpl.java:82)
at org.briarproject.briar.android.login.DozeFragment.onClick(DozeFragment.java:109)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
```
Not assigning to the current milestone because this is a very old Briar version and the relevant code has changed a lot.https://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/1396AssertionError due to SetupActivity being created when signing out2022-05-26T15:47:12ZakwizgranAssertionError due to SetupActivity being created when signing out* Android version: 4.3
* Briar version: 1.1.1 (9476782)
* Phone Model: Galaxy Nexus (yakju)
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.login.SetupActivity.onCreate(SetupActivity.java:46)
a...* Android version: 4.3
* Briar version: 1.1.1 (9476782)
* Phone Model: Galaxy Nexus (yakju)
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.login.SetupActivity.onCreate(SetupActivity.java:46)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
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)
```
Log snippet:
```
9-17 18:28:50.420 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:29:14.080 I/BriarService: Trim memory: running low
09-17 18:29:15.360 I/BriarService: Trim memory: running low
09-17 18:29:21.323 I/BriarService: Trim memory: running low
09-17 18:29:50.424 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:30:01.283 I/BriarService: Trim memory: running low
09-17 18:30:50.429 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:31:50.433 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:32:45.038 I/Poller: Polling plugin org.briarproject.bramble.tor
09-17 18:32:45.050 I/ConnectionRegistryImpl: 0 contacts connected: org.briarproject.bramble.tor
09-17 18:32:45.051 I/TorPlugin: Connecting to dif[scrubbed]
09-17 18:32:45.663 I/TorPlugin: Could not connect to dif[scrubbed]: java.io.IOException: Connection failed: Host unreachable
09-17 18:32:45.665 I/TorPlugin: NOTICE Closing stream for '[scrubbed].onion': hidden service is unavailable (try again later).
09-17 18:32:50.438 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:33:23.524 I/Poller: Polling plugin org.briarproject.bramble.lan
09-17 18:33:23.537 I/ConnectionRegistryImpl: 0 contacts connected: org.briarproject.bramble.lan
09-17 18:33:23.537 I/TcpPlugin: Connecting to /192.168.0.6
09-17 18:33:25.868 I/TcpPlugin: Could not connect to /192.168.0.6
09-17 18:33:50.443 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:34:50.448 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:35:50.453 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:36:50.458 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:37:50.462 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:38:50.466 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:38:54.012 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
09-17 18:38:54.014 I/TorPlugin: Online: true, wifi: true
09-17 18:38:54.014 I/TorPlugin: Country code: GB
09-17 18:38:54.014 I/TorPlugin: Enabling network, not using bridges
09-17 18:38:54.015 I/AndroidLanTcpPlugin: Connected to wifi
09-17 18:38:54.018 I/BriarService: Trim memory: running low
09-17 18:38:54.064 I/RenewableWakeLock: Acquiring wake lock LocationManagerService
09-17 18:38:54.064 I/RenewableWakeLock: Already acquired
09-17 18:38:56.832 I/BriarRecyclerView: Adding Handler Callback
09-17 18:39:00.314 I/BriarRecyclerView: Adding Handler Callback
09-17 18:39:00.899 I/BriarRecyclerView: Removing Handler Callback
09-17 18:39:02.579 I/BriarControllerImpl: Shutting down service
09-17 18:39:02.657 I/BriarService: Destroyed
09-17 18:39:02.659 I/LifecycleManagerImpl: Stopping services
09-17 18:39:02.660 I/PluginManagerImpl: Stopping simplex plugins
09-17 18:39:02.660 I/PluginManagerImpl: Stopping duplex plugins
09-17 18:39:02.660 I/PluginManagerImpl: Trying to stop plugin org.briarproject.bramble.tor
09-17 18:39:02.661 I/PluginManagerImpl: Trying to stop plugin org.briarproject.bramble.bluetooth
09-17 18:39:02.661 I/NavDrawerControllerImpl: TransportDisabledEvent: org.briarproject.bramble.tor
09-17 18:39:02.661 I/NavDrawerControllerImpl: TransportDisabledEvent: org.briarproject.bramble.bluetooth
09-17 18:39:02.661 I/TorPlugin: Stopping Tor
09-17 18:39:02.662 I/TorPlugin: java.net.SocketException: Socket closed
09-17 18:39:02.666 I/PluginManagerImpl: Trying to stop plugin org.briarproject.bramble.lan
09-17 18:39:02.666 I/TcpPlugin: java.net.SocketException: Socket closed
09-17 18:39:02.666 I/NavDrawerControllerImpl: TransportDisabledEvent: org.briarproject.bramble.lan
09-17 18:39:02.666 I/PluginManagerImpl: Waiting for all the plugins to stop
09-17 18:39:02.698 I/AndroidAccountManager: No database key in preferences
09-17 18:39:02.700 I/AccountManagerImpl: Found database key in primary file
09-17 18:39:02.707 I/RenewableWakeLock: Releasing wake lock LocationManagerService
09-17 18:39:02.709 I/TorPlugin: NOTICE Closing no-longer-configured Socks listener on 127.0.0.1:59050
09-17 18:39:02.709 I/TorPlugin: NOTICE DisableNetwork is set. Tor will not make or accept non-control network connections. Shutting down all existing connections.
09-17 18:39:02.709 I/TorPlugin: NOTICE Closing old Socks listener on 127.0.0.1:59050
09-17 18:39:02.720 I/TorPlugin: OR connection CLOSED $D7D905184504739AA790FFF32DF882CD5D34CF69~bauruine55
```
The crash happened when signing out after leaving Briar running in the foreground for a long time. Shutdown seems to be proceeding normally before the crash. The log shows several trim memory calls, but not at a severe enough level to hide the UI.
May be related to #1189.https://code.briarproject.org/briar/briar/-/issues/1395IllegalStateException when hiding UI due to low memory2018-10-08T12:03:31ZakwizgranIllegalStateException when hiding UI due to low memory* Android version: 8.1.0
* Briar version: 1.1.1 (9476782)
* Phone model: Xiaomi Mi A1 (tissot)
Stacktrace:
```
java.lang.RuntimeException: Unable to stop activity {org.briarproject.briar.android/org.briarproject.briar.android.logout.Hid...* Android version: 8.1.0
* Briar version: 1.1.1 (9476782)
* Phone model: Xiaomi Mi A1 (tissot)
Stacktrace:
```
java.lang.RuntimeException: Unable to stop activity {org.briarproject.briar.android/org.briarproject.briar.android.logout.HideUiActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4369)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4425)
at android.app.ActivityThread.-wrap5(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
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)
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:354)
at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:323)
at android.support.v7.app.AppCompatDelegateImplV9.initWindowDecorActionBar(AppCompatDelegateImplV9.java:175)
at android.support.v7.app.AppCompatDelegateImplBase.getSupportActionBar(AppCompatDelegateImplBase.java:145)
at android.support.v7.app.AppCompatDelegateImplV9.onStop(AppCompatDelegateImplV9.java:259)
at android.support.v7.app.AppCompatDelegateImplV14.onStop(AppCompatDelegateImplV14.java:131)
at android.support.v7.app.AppCompatActivity.onStop(AppCompatActivity.java:184)
at org.briarproject.briar.android.activity.BaseActivity.onStop(BaseActivity.java:128)
at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1376)
at android.app.Activity.performStop(Activity.java:7205)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4364)
... 9 more
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:354)
at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:323)
at android.support.v7.app.AppCompatDelegateImplV9.initWindowDecorActionBar(AppCompatDelegateImplV9.java:175)
at android.support.v7.app.AppCompatDelegateImplBase.getSupportActionBar(AppCompatDelegateImplBase.java:145)
at android.support.v7.app.AppCompatDelegateImplV9.onStop(AppCompatDelegateImplV9.java:259)
at android.support.v7.app.AppCompatDelegateImplV14.onStop(AppCompatDelegateImplV14.java:131)
at android.support.v7.app.AppCompatActivity.onStop(AppCompatActivity.java:184)
at org.briarproject.briar.android.activity.BaseActivity.onStop(BaseActivity.java:128)
at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1376)
at android.app.Activity.performStop(Activity.java:7205)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4364)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4425)
at android.app.ActivityThread.-wrap5(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
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 android.app.ActivityThread.-wrap5(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
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)
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:354)
at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:323)
at android.support.v7.app.AppCompatDelegateImplV9.initWindowDecorActionBar(AppCompatDelegateImplV9.java:175)
at android.support.v7.app.AppCompatDelegateImplBase.getSupportActionBar(AppCompatDelegateImplBase.java:145)
at android.support.v7.app.AppCompatDelegateImplV9.onStop(AppCompatDelegateImplV9.java:259)
at android.support.v7.app.AppCompatDelegateImplV14.onStop(AppCompatDelegateImplV14.java:131)
at android.support.v7.app.AppCompatActivity.onStop(AppCompatActivity.java:184)
at org.briarproject.briar.android.activity.BaseActivity.onStop(BaseActivity.java:128)
at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1376)
at android.app.Activity.performStop(Activity.java:7205)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4364)
... 9 more
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:354)
at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:323)
at android.support.v7.app.AppCompatDelegateImplV9.initWindowDecorActionBar(AppCompatDelegateImplV9.java:175)
at android.support.v7.app.AppCompatDelegateImplBase.getSupportActionBar(AppCompatDelegateImplBase.java:145)
at android.support.v7.app.AppCompatDelegateImplV9.onStop(AppCompatDelegateImplV9.java:259)
at android.support.v7.app.AppCompatDelegateImplV14.onStop(AppCompatDelegateImplV14.java:131)
at android.support.v7.app.AppCompatActivity.onStop(AppCompatActivity.java:184)
at org.briarproject.briar.android.activity.BaseActivity.onStop(BaseActivity.java:128)
at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1376)
at android.app.Activity.performStop(Activity.java:7205)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4364)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4425)
at android.app.ActivityThread.-wrap5(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
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)
```Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1393Error page is shown when trying to install Ripple from Google Play2019-06-12T10:45:27ZakwizgranError page is shown when trying to install Ripple from Google PlayWhen no panic button app is installed, touching the "Panic Button App" preference automatically opens a market:// link to install Ripple. If the device has Google Play but not F-Droid, a Play Store error page is shown. This may be confus...When no panic button app is installed, touching the "Panic Button App" preference automatically opens a market:// link to install Ripple. If the device has Google Play but not F-Droid, a Play Store error page is shown. This may be confusing for the user, as we haven't given any indication that we're about to search for an app on Google Play.
If the device has both Google Play and F-Droid, an app chooser is shown. Choosing Google Play leads to the error page.
![device-2018-09-28-110048](/uploads/5eb85f3d601c31b661f9071d70638c20/device-2018-09-28-110048.png)Android 1.1https://code.briarproject.org/briar/briar/-/issues/1392List of panic button apps isn't updated after installing app2019-02-21T10:34:00ZakwizgranList of panic button apps isn't updated after installing appSteps to reproduce:
* Uninstall Ripple
* Start Briar
* Go to "Settings > Panic button setup > Panic Button App"
* A dialog opens showing "None" as the only choice
* An app chooser opens to install Ripple (if you only have one market app...Steps to reproduce:
* Uninstall Ripple
* Start Briar
* Go to "Settings > Panic button setup > Panic Button App"
* A dialog opens showing "None" as the only choice
* An app chooser opens to install Ripple (if you only have one market app, perhaps it opens automatically?)
* Install Ripple from F-Droid
* Press back to return to Briar
* Expected:
* The dialog has closed
* Pressing "Panic Button App" again shows a list that includes Ripple
* Pressing "Panic Button App" again doesn't open the app chooser to install Ripple again
* Actual:
* The dialog is still open showing "None" as the only choice
* Pressing "Panic Button App" again shows a list with "None" as the only choice
* Pressing "Panic Button App" again opens the app chooser to install Ripple againAndroid 1.1akwizgranakwizgran