briar issueshttps://code.briarproject.org/briar/briar/-/issues2023-09-14T12:55:21Zhttps://code.briarproject.org/briar/briar/-/issues/2057AssertionError when selecting image to send2023-09-14T12:55:21ZakwizgranAssertionError when selecting image to send* Android version: 9
* Phone model: Honor KIW-L24 (lineage_kiwi)
* Briar version: 1.3.3 (c647c52)
Log snippet:
```
05-26 19:25:27.225 I/BaseActivity: Pausing NavDrawerActivity
05-26 19:25:27.302 I/BaseActivity: Creating ConversationActi...* Android version: 9
* Phone model: Honor KIW-L24 (lineage_kiwi)
* Briar version: 1.3.3 (c647c52)
Log snippet:
```
05-26 19:25:27.225 I/BaseActivity: Pausing NavDrawerActivity
05-26 19:25:27.302 I/BaseActivity: Creating ConversationActivity
05-26 19:25:27.389 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
05-26 19:25:27.536 I/BaseActivity: Starting ConversationActivity
05-26 19:25:27.540 I/BaseActivity: Resuming ConversationActivity
05-26 19:25:27.737 I/ConversationActivity: Eagerly loading text for latest message
05-26 19:25:27.850 I/BaseActivity: Pausing ConversationActivity
05-26 19:25:27.992 I/BaseActivity: Creating ConversationActivity
05-26 19:25:28.024 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
05-26 19:25:28.157 I/BaseActivity: Starting ConversationActivity
05-26 19:25:28.163 I/BaseActivity: Resuming ConversationActivity
05-26 19:25:28.816 I/ConversationActivity: Eagerly loading text for latest message
05-26 19:25:28.819 I/BaseActivity: Stopping ConversationActivity
05-26 19:25:28.831 I/BaseActivity: Destroying ConversationActivity
05-26 19:25:30.983 I/BaseActivity: Pausing ConversationActivity
05-26 19:25:31.214 I/BaseActivity: Stopping NavDrawerActivity
05-26 19:25:31.698 I/BaseActivity: Stopping ConversationActivity
```
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.view.TextAttachmentController.onImageReceived(TextAttachmentController.java:166)
at org.briarproject.briar.android.conversation.ConversationActivity.onActivityResult(ConversationActivity.java:319)
at android.app.Activity.dispatchActivityResult(Activity.java:7462)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4391)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4440)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2056IllegalArgumentException: pointerIndex out of range2021-08-27T11:46:15ZakwizgranIllegalArgumentException: pointerIndex out of range* Android version: 11
* Phone model: Redmi Note 5
* Briar version: 1.3.4 (76b7e6f)
* User feedback: "Sent a picture, then click on it to show it."
Log snippet:
```
05-28 06:43:28.401 I/BaseActivity: Pausing ConversationActivity
05-28 06...* Android version: 11
* Phone model: Redmi Note 5
* Briar version: 1.3.4 (76b7e6f)
* User feedback: "Sent a picture, then click on it to show it."
Log snippet:
```
05-28 06:43:28.401 I/BaseActivity: Pausing ConversationActivity
05-28 06:43:28.416 I/BaseActivity: Creating ImageActivity
05-28 06:43:28.441 I/BaseActivity: Starting ImageActivity
05-28 06:43:28.444 I/BaseActivity: Resuming ImageActivity
05-28 06:43:28.894 I/BaseActivity: Stopping ConversationActivity
```
Stacktrace:
```
java.lang.IllegalArgumentException: pointerIndex out of range
at android.view.MotionEvent.nativeGetAxisValue(Native Method)
at android.view.MotionEvent.getX(MotionEvent.java:2401)
at androidx.viewpager.widget.ViewPager.onInterceptTouchEvent(ViewPager.java:2072)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2664)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:488)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1873)
at android.app.Activity.dispatchTouchEvent(Activity.java:4125)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:446)
at android.view.View.dispatchPointerEvent(View.java:14568)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6022)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5825)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5316)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5373)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5339)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5491)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5347)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5548)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5320)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5373)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5339)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5347)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5320)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8086)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8037)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7998)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8209)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:220)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:335)
at android.os.Looper.loop(Looper.java:183)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
```
[Looks like](https://stackoverflow.com/a/13000343) this is a [very longstanding bug](https://issuetracker.google.com/issues/36931456) in the support library/AndroidX that was fixed recently. We may be able to fix the issue by upgrading the ViewPager library. Alternatively, various people on StackOverflow suggest workarounds that wrap the ViewPager to catch the exception.Android 1.3IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/2052Automatically share forum with contact if user and contact have both posted2022-10-30T17:18:18ZakwizgranAutomatically share forum with contact if user and contact have both postedIf the user and a contact both subscribe to a given forum and have made their subscriptions known to each other by posting to the forum, we could automatically share the forum with the contact. This would make the forum's sync graph more...If the user and a contact both subscribe to a given forum and have made their subscriptions known to each other by posting to the forum, we could automatically share the forum with the contact. This would make the forum's sync graph more robust, and would save some effort when sharing a forum among a group of contacts.
We'd want some onboarding the first time this happened, to explain that the forum would be shared automatically and to guide the user to the sharing status screen.https://code.briarproject.org/briar/briar/-/issues/2050Delete messages even on receiver user2022-02-06T11:02:31ZHostFatDelete messages even on receiver userCurrently, if the user delete a message in a chat with another user, the message is deleted only on the local phone.
It will be good to have the possibility to even delete the message (by requesting if the user wants to delete even on t...Currently, if the user delete a message in a chat with another user, the message is deleted only on the local phone.
It will be good to have the possibility to even delete the message (by requesting if the user wants to delete even on the remote phone), or all the messages, even on the remote phone.
I know that now there is the "Disappearing messages" feature, but it isn't the same (and the 7 days only option isn't enough)https://code.briarproject.org/briar/briar/-/issues/2049Fast scrolling in galery closes Briar2021-06-08T14:37:37ZbodemsFast scrolling in galery closes BriarI'm testing Briar 1.3.4 via the F-Droid repo on Android 11 (Google Pixel 3a with GrapheneOS). When I want to share an image or set the profile pic and scroll fast through the image galery (because I want to use a photo I took long ago), ...I'm testing Briar 1.3.4 via the F-Droid repo on Android 11 (Google Pixel 3a with GrapheneOS). When I want to share an image or set the profile pic and scroll fast through the image galery (because I want to use a photo I took long ago), sometimes Briar close itself. It doesn't crash, because I don't have to log in again and don't have to enter my screen lock password and I can just continue, but it is a little bit annoying.https://code.briarproject.org/briar/briar/-/issues/2048Use WebP for image compression2021-12-10T08:54:25ZakwizgranUse WebP for image compressionA user suggested that we use WebP rather than JPEG for compressing images. It's supported on API 14 and seems to give better results than JPEG at high compression levels.
Comparison between JPEG, WebP and AVIF:
https://jakearchibald....A user suggested that we use WebP rather than JPEG for compressing images. It's supported on API 14 and seems to give better results than JPEG at high compression levels.
Comparison between JPEG, WebP and AVIF:
https://jakearchibald.com/2020/avif-has-landed/https://code.briarproject.org/briar/briar/-/issues/1982RuntimeException: getParameters failed (empty parameters)2021-05-05T16:12:24ZakwizgranRuntimeException: getParameters failed (empty parameters)* Android version: 7.1
* Phone model: Google Nexus 7 (nakasig)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
getParameters failed (empty parameters)
java.lang.RuntimeException: getParameters failed (empty parameters)
at andr...* Android version: 7.1
* Phone model: Google Nexus 7 (nakasig)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
getParameters failed (empty parameters)
java.lang.RuntimeException: getParameters failed (empty parameters)
at android.hardware.Camera.native_getParameters(Native Method)
at android.hardware.Camera.getParameters(Camera.java:1896)
at org.briarproject.briar.android.keyagreement.CameraView.start(CameraView.java:130)
at org.briarproject.briar.android.keyagreement.KeyAgreementFragment.onStart(KeyAgreementFragment.java:149)
at androidx.fragment.app.Fragment.performStart(Fragment.java:2730)
at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
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:6148)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
```
This is very similar to #998, but getParameters() is being called from a different place where apparently we forgot to catch the exception.
Also similar to #1523, but here the call is synchronous so catching the exception is an option.Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1981NPE from MaterialTapTargetPrompt when setting typeface2021-08-27T11:45:48ZakwizgranNPE from MaterialTapTargetPrompt when setting typeface* Android version: 10
* Phone model: Xiaomi Redmi Note 7 Pro (violet)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
java.lang.NullPointerEx...* Android version: 10
* Phone model: Xiaomi Redmi Note 7 Pro (violet)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
java.lang.NullPointerException: Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
at android.graphics.Typeface.create(Typeface.java:849)
at uk.co.samuelwall.materialtaptargetprompt.extras.PromptUtils.setTypefaceFromAttrs(PromptUtils.java:127)
at uk.co.samuelwall.materialtaptargetprompt.extras.PromptOptions.load(PromptOptions.java:248)
at uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt$Builder.<init>(MaterialTapTargetPrompt.java:1139)
at uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt$Builder.<init>(MaterialTapTargetPrompt.java:1122)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.showTransportsOnboarding(NavDrawerActivity.java:489)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$null$2(NavDrawerActivity.java:181)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$null$2$NavDrawerActivity(Unknown Source:0)
at org.briarproject.briar.android.navdrawer.-$$Lambda$NavDrawerActivity$xWqZhXc-2hRSJQvQHp-zwWTmweU.onChanged(Unknown Source:6)
at org.briarproject.briar.android.util.UiUtils$3.onChanged(UiUtils.java:400)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:131)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:144)
at androidx.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:443)
at androidx.lifecycle.LiveData$LifecycleBoundObserver.onStateChanged(LiveData.java:395)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:188)
at androidx.lifecycle.LiveData.observe(LiveData.java:203)
at org.briarproject.briar.android.util.UiUtils.observeOnce(UiUtils.java:397)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$onCreate$3(NavDrawerActivity.java:180)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$onCreate$3$NavDrawerActivity(Unknown Source:0)
at org.briarproject.briar.android.navdrawer.-$$Lambda$NavDrawerActivity$LIifbSpjf5QmEgmsWY6XA8WUmPg.onChanged(Unknown Source:4)
at org.briarproject.briar.android.util.UiUtils$3.onChanged(UiUtils.java:400)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:131)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:149)
at androidx.lifecycle.LiveData.setValue(LiveData.java:307)
at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50)
at androidx.lifecycle.LiveData$1.run(LiveData.java:91)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7592)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
```
Log snippet:
```
03-16 17:09:44.556 I/TorPlugin: Country code: IN
```
Perhaps country code IN could mean that the system typeface is different than on our test devices?Android 1.3https://code.briarproject.org/briar/briar/-/issues/1980SecurityException in ConnectivityManager#getNetworkCapabilities()2022-04-20T14:51:58ZakwizgranSecurityException in ConnectivityManager#getNetworkCapabilities()* Android version: 11
* Phone model: Android Pixel 3 (aosp_blueline)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Package android does not belong to 10144
java.lang.SecurityException: Package android does not belong to 10144
...* Android version: 11
* Phone model: Android Pixel 3 (aosp_blueline)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Package android does not belong to 10144
java.lang.SecurityException: Package android does not belong to 10144
at android.os.Parcel.createExceptionOrNull(Parcel.java:2373)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.os.Parcel.readException(Parcel.java:2282)
at android.net.IConnectivityManager$Stub$Proxy.getNetworkCapabilities(IConnectivityManager.java:2456)
at android.net.ConnectivityManager.getNetworkCapabilities(ConnectivityManager.java:1385)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.getSocketFactory(AndroidLanTcpPlugin.java:241)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0(AndroidLanTcpPlugin.java:283)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0$AndroidLanTcpPlugin(Unknown Source:0)
at org.briarproject.bramble.plugin.tcp.-$$Lambda$AndroidLanTcpPlugin$RnrvoJsXGo91N3aS5KUNVN0J3hU.run(Unknown Source:2)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0(PoliteExecutor.java:57)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0$PoliteExecutor(Unknown Source:0)
at org.briarproject.bramble.-$$Lambda$PoliteExecutor$wSvuPL6t_HUoaaqCVexrhJX_RSg.run(Unknown Source:6)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: android.os.RemoteException: Remote stack trace:
at android.app.AppOpsManager.checkPackage(AppOpsManager.java:7739)
at com.android.server.ConnectivityService.getNetworkCapabilities(ConnectivityService.java:1668)
at android.net.IConnectivityManager$Stub.onTransact(IConnectivityManager.java:978)
at android.os.Binder.execTransactInternal(Binder.java:1154)
at android.os.Binder.execTransact(Binder.java:1123)
```
Edited log:
```
03-06 01:00:56.967 I/BriarApplicationImpl: Created
03-06 01:00:56.996 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:05.194 I/BaseActivity: Creating SplashScreenActivity
03-06 01:05:05.221 I/BaseActivity: Starting SplashScreenActivity
03-06 01:05:05.226 I/BaseActivity: Resuming SplashScreenActivity
03-06 01:05:05.748 I/BaseActivity: Pausing SplashScreenActivity
03-06 01:05:05.758 I/BaseActivity: Creating NavDrawerActivity
03-06 01:05:05.844 I/BaseActivity: Starting NavDrawerActivity
03-06 01:05:05.846 I/BaseActivity: Resuming NavDrawerActivity
03-06 01:05:05.846 I/BriarActivity: Not signed in, launching StartupActivity
03-06 01:05:05.853 I/BaseActivity: Pausing NavDrawerActivity
03-06 01:05:05.858 I/BaseActivity: Creating StartupActivity
03-06 01:05:05.870 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:05.872 I/BaseActivity: Starting StartupActivity
03-06 01:05:05.914 I/BaseActivity: Resuming StartupActivity
03-06 01:05:06.031 I/BaseActivity: Stopping NavDrawerActivity
03-06 01:05:06.570 I/BaseActivity: Stopping SplashScreenActivity
03-06 01:05:06.571 I/BaseActivity: Destroying SplashScreenActivity
03-06 01:05:12.041 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:13.075 I/AndroidKeyStrengthener: Loaded key from keystore
03-06 01:05:13.420 I/BriarService: Created
03-06 01:05:13.422 I/RenewableWakeLock: Acquiring wake lock org.briarproject.briar.android
03-06 01:05:13.431 I/LifecycleManagerImpl: Opening database
03-06 01:05:13.443 I/H2Database: Reopening DB: true
03-06 01:05:13.743 I/JdbcDatabase: 15994116646 ms since last compaction
03-06 01:05:13.945 I/IdentityManagerImpl: Identity loaded
03-06 01:05:13.955 I/LifecycleManagerImpl: Starting services
03-06 01:05:13.958 I/AndroidNetworkManager: Received broadcast android.net.conn.CONNECTIVITY_CHANGE
03-06 01:05:13.967 I/PluginManagerImpl: Starting simplex plugins
03-06 01:05:13.967 I/PluginManagerImpl: Starting duplex plugins
03-06 01:05:13.971 I/PluginManagerImpl: org.briarproject.bramble.bluetooth changed from state STARTING_STOPPING to DISABLED
03-06 01:05:13.971 I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.bluetooth is DISABLED
03-06 01:05:13.976 I/AndroidTorPlugin: Deleted Tor binary
03-06 01:05:13.978 I/AndroidTorPlugin: Deleted obfs4 binary
03-06 01:05:13.989 I/BluetoothPlugin: Local address null
03-06 01:05:14.009 I/PluginManagerImpl: org.briarproject.bramble.lan changed from state STARTING_STOPPING to INACTIVE
03-06 01:05:14.009 I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.lan is INACTIVE
03-06 01:05:14.016 I/AndroidLanTcpPlugin: Connected to wifi
```
Looks like this phone's running an AOSP build. I won't add this to the milestone for now, unless/until we get further reports.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1979Crash when showing feedback details as feedback is being sent2021-05-05T16:11:10ZakwizgranCrash when showing feedback details as feedback is being sent* Android version: 11
* Phone model: Google Pixel 4a (sunfish)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "I was about to send feedback and I selected include more data and send, while it was loading I pressed on 'show' to see th...* Android version: 11
* Phone model: Google Pixel 4a (sunfish)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "I was about to send feedback and I selected include more data and send, while it was loading I pressed on 'show' to see the logs that will be sent, then it caused the crash prompt."
Stacktrace:
```
String resource ID #0x0
android.content.res.Resources$NotFoundException: String resource ID #0x0
at android.content.res.Resources.getText(Resources.java:444)
at android.widget.TextView.setText(TextView.java:6429)
at org.briarproject.briar.android.reporting.ReportDataAdapter$ReportDataViewHolder.bind(ReportDataAdapter.java:62)
at org.briarproject.briar.android.reporting.ReportDataAdapter.onBindViewHolder(ReportDataAdapter.java:38)
at org.briarproject.briar.android.reporting.ReportDataAdapter.onBindViewHolder(ReportDataAdapter.java:18)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3540)
at android.view.View.measure(View.java:25466)
at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:792)
at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measure(BasicMeasure.java:480)
at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measureChildren(BasicMeasure.java:134)
at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:277)
at androidx.constraintlayout.solver.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:119)
at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1578)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1690)
at android.view.View.measure(View.java:25466)
at androidx.core.widget.NestedScrollView.measureChildWithMargins(NestedScrollView.java:1599)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.core.widget.NestedScrollView.onMeasure(NestedScrollView.java:585)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:146)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:747)
at android.view.View.measure(View.java:25466)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3402)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2246)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2504)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1948)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8177)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
at android.view.Choreographer.doCallbacks(Choreographer.java:796)
at android.view.Choreographer.doFrame(Choreographer.java:731)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
```
Log not available due to #1917.Android 1.2IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1978SecurityException from Samsung clipboard manager2021-04-16T17:25:18ZakwizgranSecurityException from Samsung clipboard manager* Android version: 10
* Phone model: Samsung SM-A415F (a41ser)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
No access to content://com.sec.android.semclipboardprovider/images: neither user 15010232 nor current process has android.p...* Android version: 10
* Phone model: Samsung SM-A415F (a41ser)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
No access to content://com.sec.android.semclipboardprovider/images: neither user 15010232 nor current process has android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS
java.lang.SecurityException: No access to content://com.sec.android.semclipboardprovider/images: neither user 15010232 nor current process has android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS
at android.os.Parcel.createException(Parcel.java:2088)
at android.os.Parcel.readException(Parcel.java:2056)
at android.os.Parcel.readException(Parcel.java:2004)
at android.sec.clipboard.IClipboardService$Stub$Proxy.getClipData(IClipboardService.java:959)
at com.samsung.android.content.clipboard.SemClipboardManager.getLatestClip(SemClipboardManager.java:609)
at android.widget.EditText.updateClipboardFilter(EditText.java:316)
at android.widget.EditText.dispatchWindowFocusChanged(EditText.java:297)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1502)
at android.view.ViewRootImpl.handleWindowFocusChanged(ViewRootImpl.java:3487)
at android.view.ViewRootImpl.access$1300(ViewRootImpl.java:205)
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:5393)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8167)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.content.ContentService.handleIncomingUser(ContentService.java:1355)
at com.android.server.content.ContentService.registerContentObserver(ContentService.java:355)
at android.content.ContentResolver.registerContentObserver(ContentResolver.java:2270)
at android.database.AbstractCursor.setNotificationUris(AbstractCursor.java:447)
at android.database.AbstractCursor.setNotificationUris(AbstractCursor.java:422)
```
Log:
```
03-18 10:33:23.037 I/BriarApplicationImpl: Created
03-18 10:33:23.073 I/BaseActivity: Creating SplashScreenActivity
03-18 10:33:23.095 I/BaseActivity: Starting SplashScreenActivity
03-18 10:33:23.096 I/BaseActivity: Resuming SplashScreenActivity
03-18 10:33:23.617 I/BaseActivity: Pausing SplashScreenActivity
03-18 10:33:23.644 I/BaseActivity: Creating NavDrawerActivity
03-18 10:33:23.690 I/BaseActivity: Starting NavDrawerActivity
03-18 10:33:23.691 I/BaseActivity: Resuming NavDrawerActivity
03-18 10:33:23.691 I/BriarActivity: Not signed in, launching StartupActivity
03-18 10:33:23.711 I/BaseActivity: Pausing NavDrawerActivity
03-18 10:33:23.729 I/BaseActivity: Creating StartupActivity
03-18 10:33:23.739 I/AccountManagerImpl: Found database key in primary file
03-18 10:33:23.741 I/BaseActivity: Starting StartupActivity
03-18 10:33:23.858 I/BaseActivity: Resuming StartupActivity
```
"INTERACT_ACROSS_USERS" suggests this may be a bug that happens in multi-user mode when using the Samsung clipboard manager.https://code.briarproject.org/briar/briar/-/issues/1977SecurityException due to missing ACCESS_WIFI_STATE permission2021-11-04T11:03:25ZakwizgranSecurityException due to missing ACCESS_WIFI_STATE permission* Android version: 9
* Phone model: Samsung SM-A207F (a20sxx)
* Briar version: 1.2.13 (5fdc7e7)
Stacktrace:
```
WifiService: Neither user 10177 nor current process has android.permission.ACCESS_WIFI_STATE.
java.lang.SecurityException: W...* Android version: 9
* Phone model: Samsung SM-A207F (a20sxx)
* Briar version: 1.2.13 (5fdc7e7)
Stacktrace:
```
WifiService: Neither user 10177 nor current process has android.permission.ACCESS_WIFI_STATE.
java.lang.SecurityException: WifiService: Neither user 10177 nor current process has android.permission.ACCESS_WIFI_STATE.
at android.os.Parcel.createException(Parcel.java:1966)
at android.os.Parcel.readException(Parcel.java:1934)
at android.os.Parcel.readException(Parcel.java:1884)
at android.net.wifi.IWifiManager$Stub$Proxy.getConnectionInfo(IWifiManager.java:1928)
at android.net.wifi.WifiManager.getConnectionInfo(WifiManager.java:2099)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.getWifiIpv4Address(AndroidLanTcpPlugin.java:129)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.getPreferredWifiAddress(AndroidLanTcpPlugin.java:298)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0(AndroidLanTcpPlugin.java:260)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0$AndroidLanTcpPlugin(Unknown Source:0)
at org.briarproject.bramble.plugin.tcp.-$$Lambda$AndroidLanTcpPlugin$RnrvoJsXGo91N3aS5KUNVN0J3hU.run(Unknown Source:2)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0(PoliteExecutor.java:57)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0$PoliteExecutor(Unknown Source:0)
at org.briarproject.bramble.-$$Lambda$PoliteExecutor$wSvuPL6t_HUoaaqCVexrhJX_RSg.run(Unknown Source:6)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
Caused by: android.os.RemoteException: Remote stack trace:
at android.app.ContextImpl.enforce(ContextImpl.java:1924)
at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1952)
at com.android.server.wifi.WifiServiceImpl.enforceAccessPermission(WifiServiceImpl.java:1697)
at com.android.server.wifi.WifiServiceImpl.getConnectionInfo(WifiServiceImpl.java:3776)
at android.net.wifi.IWifiManager$Stub.onTransact(IWifiManager.java:341)
```
Log not available due to #1917.
This is a strange one. Briar requests ACCESS_WIFI_STATE in the manifest and it should be granted automatically at install time.
Perhaps the device is in multi-user mode and only one user can hold this permission at once? Or perhaps the device has a permission management app that allows this permission to be revoked?Android 1.4https://code.briarproject.org/briar/briar/-/issues/1976TimeoutException: android.os.BinderProxy.finalize() timed out after 10 seconds2021-03-24T16:19:38ZakwizgranTimeoutException: android.os.BinderProxy.finalize() timed out after 10 seconds* Android version: 7.1.2
* Phone model: Samsung SM-N7505 (hlltexx)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
android.os.BinderProxy.finalize() timed out after 10 seconds
java.util.concurrent.TimeoutException: android.os.BinderPr...* Android version: 7.1.2
* Phone model: Samsung SM-N7505 (hlltexx)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
android.os.BinderProxy.finalize() timed out after 10 seconds
java.util.concurrent.TimeoutException: android.os.BinderProxy.finalize() timed out after 10 seconds
at android.os.BinderProxy.destroy(Native Method)
at android.os.BinderProxy.finalize(Binder.java:677)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:222)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:209)
at java.lang.Thread.run(Thread.java:761)
```
Possibly related to #1901?https://code.briarproject.org/briar/briar/-/issues/1954Voice messages2023-02-26T08:07:02ZakwizgranVoice messagesSeveral users have asked to be able to send asynchronous voice messages (voice notes). This request was previously recorded under #985 (voice/video calls) but I'm moving it to its own ticket as the requirements and implementation are dif...Several users have asked to be able to send asynchronous voice messages (voice notes). This request was previously recorded under #985 (voice/video calls) but I'm moving it to its own ticket as the requirements and implementation are different.
Relevant comments from #985:
* https://code.briarproject.org/briar/briar/-/issues/985#note_28705
* https://code.briarproject.org/briar/briar/-/issues/985#note_44100
* https://code.briarproject.org/briar/briar/-/issues/985#note_47061https://code.briarproject.org/briar/briar/-/issues/1941making the ### clickable and show a small dialog2021-07-23T11:18:13Zsystermaking the ### clickable and show a small dialogNext to an account name of someone that wrote a message there are 3 hashes shown. They can vary in color.
Make a clickable dialogue that will explain its meaning.Next to an account name of someone that wrote a message there are 3 hashes shown. They can vary in color.
Make a clickable dialogue that will explain its meaning.https://code.briarproject.org/briar/briar/-/issues/1938UnknownServiceException: Cleartext communication not permitted2021-02-17T12:27:36ZakwizgranUnknownServiceException: Cleartext communication not permitted* Android version: 10
* Phone model: Fairphone FP3
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "Import RSS fail"
Log snippet:
```
02-14 16:15:58.259 W/RssFeedImportActivity: java.net.UnknownServiceException: CLEARTEXT communicati...* Android version: 10
* Phone model: Fairphone FP3
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "Import RSS fail"
Log snippet:
```
02-14 16:15:58.259 W/RssFeedImportActivity: java.net.UnknownServiceException: CLEARTEXT communication to [scrubbed] not permitted by network security policy
java.net.UnknownServiceException: CLEARTEXT communication to [scrubbed] not permitted by network security policy
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:148)
at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:258)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:127)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:257)
at okhttp3.RealCall.execute(RealCall.java:93)
at org.briarproject.briar.feed.FeedManagerImpl.getFeedInputStream(FeedManagerImpl.java:385)
at org.briarproject.briar.feed.FeedManagerImpl.fetchSyndFeed(FeedManagerImpl.java:332)
at org.briarproject.briar.feed.FeedManagerImpl.addFeed(FeedManagerImpl.java:171)
at org.briarproject.briar.android.blog.RssFeedImportActivity.lambda$importFeed$2(RssFeedImportActivity.java:137)
at org.briarproject.briar.android.blog.RssFeedImportActivity.lambda$importFeed$2$RssFeedImportActivity(Unknown Source:0)
at org.briarproject.briar.android.blog.-$$Lambda$RssFeedImportActivity$yMsHehcx_j-aBTiyhHwsHyxrpIs.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
```
Note: the domain name wasn't scrubbed from the original log. We should fix that.https://code.briarproject.org/briar/briar/-/issues/1937IndexOutOfBoundsException when selecting text2023-09-14T12:20:44ZakwizgranIndexOutOfBoundsException when selecting text* Android version: 7.1.1
* Phone model: OnePlus A5000 (OnePlus5)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "I was trying to use this app offline to contact my friend."
Stacktrace:
```
java.lang.IndexOutOfBoundsException: setSpa...* Android version: 7.1.1
* Phone model: OnePlus A5000 (OnePlus5)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "I was trying to use this app offline to contact my friend."
Stacktrace:
```
java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1325)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:683)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:676)
at android.text.Selection.setSelection(Selection.java:76)
at android.text.method.ArrowKeyMovementMethod.onTouchEvent(ArrowKeyMovementMethod.java:291)
at android.widget.TextView.onTouchEvent(TextView.java:8546)
at android.view.View.dispatchTouchEvent(View.java:10180)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:414)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1808)
at android.app.Activity.dispatchTouchEvent(Activity.java:3122)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:376)
at android.view.View.dispatchPointerEvent(View.java:10400)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4445)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4313)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3860)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3913)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3879)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4006)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3887)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4063)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3860)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3913)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3879)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3887)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3860)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6254)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6228)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6189)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6357)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:6138)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
```
No log due to #1917.
Looks like a platform bug - I'm opening this ticket in case there's a known workaround.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1936Contact was shown as offline when online2021-02-17T11:15:26ZakwizgranContact was shown as offline when online* Android version: 10
* Phone model: Huawei LYA-L29 (LYA-L29RU)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "Very often displays incorrect information about the network status of another contact. The interlocutor is online for all...* Android version: 10
* Phone model: Huawei LYA-L29 (LYA-L29RU)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "Very often displays incorrect information about the network status of another contact. The interlocutor is online for all network conditions, and displays as if he is not available."
Edited log:
```
02-12 20:59:14.597 I/DuplexOutgoingSession: Sending keepalive
02-12 20:59:44.598 I/DuplexOutgoingSession: Sending keepalive
02-12 20:59:53.360 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
02-12 20:59:53.367 I/TorPlugin: Online: true, wifi: true, IPv6 only: false
02-12 20:59:53.367 I/TorPlugin: Country code: RU
02-12 20:59:53.367 I/TorPlugin: Charging: false
02-12 20:59:53.367 I/TorPlugin: Enabling network
02-12 20:59:53.367 I/TorPlugin: Using obfs4 bridges
02-12 20:59:53.367 I/TorPlugin: Disabling connection padding
02-12 21:00:02.666 I/PollerImpl: Polling plugin org.briarproject.bramble.bluetooth
02-12 21:00:02.672 I/ConnectionRegistryImpl: 0 contacts connected or better: org.briarproject.bramble.bluetooth
02-12 21:00:09.531 I/BaseActivity: Creating SplashScreenActivity
02-12 21:00:09.575 I/BaseActivity: Creating NavDrawerActivity
02-12 21:00:09.597 I/BaseActivity: Starting NavDrawerActivity
02-12 21:00:09.598 I/BaseActivity: Resuming NavDrawerActivity
02-12 21:00:10.158 I/BaseActivity: Destroying SplashScreenActivity
02-12 21:00:14.598 I/DuplexOutgoingSession: Sending keepalive
02-12 21:00:16.395 I/BaseActivity: Pausing NavDrawerActivity
02-12 21:00:16.818 I/BaseActivity: Stopping NavDrawerActivity
02-12 21:00:17.015 I/PollerImpl: Polling plugin org.briarproject.bramble.tor
02-12 21:00:17.019 I/ConnectionRegistryImpl: 1 contacts connected or better: org.briarproject.bramble.tor
02-12 21:00:17.020 I/TorPlugin: Connecting to v3 wwi[scrubbed]
02-12 21:00:17.793 I/TorPlugin: Connected to v3 wwi[scrubbed]
02-12 21:00:17.824 I/DuplexOutgoingSession: Generated ack: false
02-12 21:00:17.827 I/DuplexOutgoingSession: Generated batch: false
02-12 21:00:17.830 I/DuplexOutgoingSession: Generated offer: false
02-12 21:00:17.830 I/DuplexOutgoingSession: Generated request: false
02-12 21:00:18.981 I/ConnectionRegistryImpl: Outgoing connection registered: org.briarproject.bramble.tor
02-12 21:00:18.982 I/ConnectionRegistryImpl: Contact connected
02-12 21:00:18.982 I/ConnectionRegistryImpl: Setting connection priority: org.briarproject.bramble.tor
02-12 21:00:28.954 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_OFF
02-12 21:00:28.959 I/TorPlugin: Online: true, wifi: true, IPv6 only: false
02-12 21:00:28.959 I/TorPlugin: Country code: RU
02-12 21:00:28.959 I/TorPlugin: Charging: false
02-12 21:00:28.959 I/TorPlugin: Enabling network
02-12 21:00:28.959 I/TorPlugin: Using obfs4 bridges
02-12 21:00:28.959 I/TorPlugin: Disabling connection padding
02-12 21:00:33.955 I/TorPlugin: V3 descriptor uploaded
02-12 21:00:34.584 I/TorPlugin: V3 descriptor uploaded
02-12 21:00:34.720 I/TorPlugin: V3 descriptor uploaded
02-12 21:00:34.942 I/TorPlugin: V3 descriptor uploaded
02-12 21:00:35.030 I/TorPlugin: V3 descriptor uploaded
02-12 21:00:39.403 I/TorPlugin: V3 descriptor uploaded
02-12 21:00:44.598 I/DuplexOutgoingSession: Sending keepalive
02-12 21:00:47.823 I/DuplexOutgoingSession: Sending keepalive
02-12 21:00:50.914 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
02-12 21:00:50.918 I/TorPlugin: Online: true, wifi: true, IPv6 only: false
02-12 21:00:50.918 I/TorPlugin: Country code: RU
02-12 21:00:50.918 I/TorPlugin: Charging: false
02-12 21:00:50.918 I/TorPlugin: Enabling network
02-12 21:00:50.918 I/TorPlugin: Using obfs4 bridges
02-12 21:00:50.918 I/TorPlugin: Disabling connection padding
02-12 21:00:57.771 I/BaseActivity: Starting NavDrawerActivity
02-12 21:00:57.772 I/BaseActivity: Resuming NavDrawerActivity
02-12 21:01:02.667 I/PollerImpl: Polling plugin org.briarproject.bramble.bluetooth
02-12 21:01:02.673 I/ConnectionRegistryImpl: 0 contacts connected or better: org.briarproject.bramble.bluetooth
02-12 21:01:05.717 I/TorPlugin: V3 descriptor uploaded
02-12 21:01:06.601 I/TorPlugin: V3 descriptor uploaded
02-12 21:01:06.988 I/BaseActivity: Pausing NavDrawerActivity
02-12 21:01:07.007 I/BaseActivity: Creating SettingsActivity
02-12 21:01:07.026 I/BaseActivity: Starting SettingsActivity
02-12 21:01:07.060 I/BaseActivity: Resuming SettingsActivity
02-12 21:01:07.539 I/BaseActivity: Stopping NavDrawerActivity
02-12 21:01:11.405 I/PollerImpl: Polling plugin org.briarproject.bramble.lan
02-12 21:01:11.418 I/ConnectionRegistryImpl: 0 contacts connected or better: org.briarproject.bramble.lan
02-12 21:01:11.539 I/BaseActivity: Pausing SettingsActivity
02-12 21:01:11.551 I/BaseActivity: Creating FeedbackActivity
```
Notes:
* A duplex connection to a contact is open at the start of the log
* Later log messages from the poller show that this is a Tor connection, rather than Bluetooth or LAN
* A second Tor connection is made at 21:00:17
* The Tor hidden service descriptor is being uploaded, which may indicate that the device recently came online, or may be the daily republishing of the descriptor
The reported issue could be a UI bug (failing to show/update the online state of one or both contacts), or it could be a network or power management issue at the contact's end, causing the contact's Tor connection to be lost.https://code.briarproject.org/briar/briar/-/issues/1935ArrayIndexOutOfBoundsException in RecyclerView2021-11-04T11:03:23ZakwizgranArrayIndexOutOfBoundsException in RecyclerView* Android version: 10
* Briar version: 1.2.10 (54b852d)
Stacktrace:
```
java.lang.ArrayIndexOutOfBoundsException: length=5; index=7
at java.util.Arrays$ArrayList.get(Arrays.java:3766)
at androidx.recyclerview.selection.T...* Android version: 10
* Briar version: 1.2.10 (54b852d)
Stacktrace:
```
java.lang.ArrayIndexOutOfBoundsException: length=5; index=7
at java.util.Arrays$ArrayList.get(Arrays.java:3766)
at androidx.recyclerview.selection.ToolHandlerRegistry.get(ToolHandlerRegistry.java:69)
at androidx.recyclerview.selection.EventRouter.onInterceptTouchEvent(EventRouter.java:57)
at androidx.recyclerview.widget.RecyclerView.findInterceptingOnItemTouchListener(RecyclerView.java:3151)
at androidx.recyclerview.widget.RecyclerView.onInterceptTouchEvent(RecyclerView.java:3170)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2620)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2709)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:613)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1933)
at android.app.Activity.dispatchTouchEvent(Activity.java:4147)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:559)
at android.view.View.dispatchPointerEvent(View.java:13766)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5824)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5619)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5063)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5116)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5082)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5239)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5090)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5296)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5063)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5116)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5082)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5090)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5063)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7954)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7905)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7859)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8144)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:233)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:363)
at android.os.Looper.loop(Looper.java:173)
at android.app.ActivityThread.main(ActivityThread.java:8169)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
```
Edited log:
```
02-12 21:12:09.963 I/BaseActivity: Starting ConversationActivity
02-12 21:12:09.965 I/BaseActivity: Resuming ConversationActivity
02-12 21:12:10.590 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
```
Crash occurred at 21:12:18.697.
This looks like a RecyclerView bug. Opening a ticket in case we need to upgrade the relevant library.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1929Scan QR codes from DigiSafeGuard encryption app2021-02-10T15:09:30ZRion OcerusScan QR codes from DigiSafeGuard encryption appThis app could be much more robust, if preparation was made to share, & have shared QR codes from DigiSafe Guard (DSG)from SecuryptoThis app could be much more robust, if preparation was made to share, & have shared QR codes from DigiSafe Guard (DSG)from Securypto