briar issueshttps://code.briarproject.org/groups/briar/-/issues2022-08-17T10:10:55Zhttps://code.briarproject.org/briar/briar/-/issues/1808Download data from mailbox2022-08-17T10:10:55ZakwizgranDownload data from mailboxWrite backend code to download a file from the user's own mailbox or a contact's mailbox into a temporary directory, try to read a simplex stream from the local file, and delete the file from the mailbox and the temporary directory.
Dep...Write backend code to download a file from the user's own mailbox or a contact's mailbox into a temporary directory, try to read a simplex stream from the local file, and delete the file from the mailbox and the temporary directory.
Depends on #1804.Mailbox2022-10-31https://code.briarproject.org/briar/briar/-/issues/1807Upload data to mailbox2022-08-17T10:10:33ZakwizgranUpload data to mailboxWrite backend code to create a temporary file, write a simplex stream to the file, and upload the file to the user's own mailbox or a contact's mailbox.
Depends on #1804.Write backend code to create a temporary file, write a simplex stream to the file, and upload the file to the user's own mailbox or a contact's mailbox.
Depends on #1804.Mailbox2022-10-31https://code.briarproject.org/briar/briar/-/issues/1806Manage mailbox connections2021-11-25T13:06:21ZakwizgranManage mailbox connectionsWrite backend code to manage connections to the user's own mailbox and contacts' mailboxes. These connections are at a different layer from those managed by the existing ConnectionManager so they probably need their own manager.Write backend code to manage connections to the user's own mailbox and contacts' mailboxes. These connections are at a different layer from those managed by the existing ConnectionManager so they probably need their own manager.Mailbox: Manage mailbox connections2022-10-31https://code.briarproject.org/briar/briar/-/issues/1805Briar pairing with mailbox2021-11-25T13:27:06ZakwizgranBriar pairing with mailboxDesign and implement UI and backend for pairing with a mailbox.
Depends on #1804.Design and implement UI and backend for pairing with a mailbox.
Depends on #1804.Mailbox: Pairing2022-10-31https://code.briarproject.org/briar/briar/-/issues/1319Add backpressure to simplex outgoing sync sessions2022-05-26T12:52:47ZakwizgranAdd backpressure to simplex outgoing sync sessionsSimplexOutgoingSession reads acks and messages from the database as quickly as possible and queues them for transmission. If the DB is faster than the transport, this will result in all sendable acks and messages being queued. This uses ...SimplexOutgoingSession reads acks and messages from the database as quickly as possible and queues them for transmission. If the DB is faster than the transport, this will result in all sendable acks and messages being queued. This uses an unbounded amount of memory and increases the risk of acks or messages being lost before they're transmitted, leading to unnecessary retransmissions.
Add a backpressure mechanism that limits the amount of queued data and delays DB reads when the queue is full.Mailbox: Manage mailbox connectionsakwizgranakwizgran2022-10-31https://code.briarproject.org/briar/briar/-/issues/1011Offline message delivery (mailbox)2023-06-19T14:01:29ZakwizgranOffline message delivery (mailbox)Two testers asked for the ability for messages to be delivered while the recipient is offline. "Some of my global contacts are rarely online with me."Two testers asked for the ability for messages to be delivered while the recipient is offline. "Some of my global contacts are rarely online with me."Mailbox2022-10-31https://code.briarproject.org/briar/briar/-/issues/2003Check for API/behaviour changes in Android 12 that could affect Briar2022-10-31T14:20:43ZakwizgranCheck for API/behaviour changes in Android 12 that could affect Briar* [x] [Safer component exporting](https://developer.android.com/about/versions/12/behavior-changes-12#exported) activities, services, or broadcast receivers that use intent filters must explicitly declare the `android:exported` attribut...* [x] [Safer component exporting](https://developer.android.com/about/versions/12/behavior-changes-12#exported) activities, services, or broadcast receivers that use intent filters must explicitly declare the `android:exported` attribute
* [x] [Pending intents mutability](https://developer.android.com/about/versions/12/behavior-changes-12#pending-intent-mutability)
* [x] [Unsafe intent launches](https://developer.android.com/about/versions/12/behavior-changes-12#unsafe-intent-launches)
* [x] `allowBackup="false"` doesn’t disable D2D transfers for the app. https://developer.android.com/about/versions/12/backup-restore
* [x] `SCHEDULE_EXACT_ALARM` permission https://developer.android.com/about/versions/12/behavior-changes-12#exact-alarm-permission
* [x] Restrictive App Standby bucket https://developer.android.com/about/versions/12/behavior-changes-all#restrictive-app-standby-bucket
* [x] [`BLUETOOTH_CONNECT`](https://developer.android.com/reference/android/Manifest.permission.html#BLUETOOTH_CONNECT) and [`BLUETOOTH_SCAN`](https://developer.android.com/reference/android/Manifest.permission.html#BLUETOOTH_SCAN) permissions
* [x] [`usesPermissionFlags`](https://developer.android.com/reference/android/R.attr.html#usesPermissionFlags) and `neverForLocation`
* [x] Location permission dialog
* [x] Splash screen
* [x] Camera notification
* [x] Multi-window mode
* [x] Camera preview on large screensAndroid 1.4Torsten GroteTorsten Grote2022-11-01https://code.briarproject.org/briar/briar/-/issues/1816Research multi-hop communication via social mesh2023-09-15T16:49:27ZakwizgranResearch multi-hop communication via social meshIdentify one or more possible solutions for propagating end-to-end encrypted data over the "social mesh" of connections between Briar users, by allowing devices to relay data they don't subscribe to.
Identify and evaluate any risks of p...Identify one or more possible solutions for propagating end-to-end encrypted data over the "social mesh" of connections between Briar users, by allowing devices to relay data they don't subscribe to.
Identify and evaluate any risks of passive information leaks or active attacks. Evaluate performance (e.g. fraction of messages delivered, delivery latency, bandwidth and battery use) taking the current single-hop sync as a baseline. Recommend whether any of the solutions should be incorporated into Briar.2022-12-31https://code.briarproject.org/briar/briar-desktop/-/issues/463Release 0.4.0-beta2023-03-11T14:33:38ZMikolai GütschowRelease 0.4.0-betasee #412 as reference
### Preparation
* [x] String freeze (disable auto-pull) and announcement on Transifex at least a week before the release
* [x] Update translations (!292)
- run `tx pull -a -f`, add new languages to `Unencrypt...see #412 as reference
### Preparation
* [x] String freeze (disable auto-pull) and announcement on Transifex at least a week before the release
* [x] Update translations (!292)
- run `tx pull -a -f`, add new languages to `UnencryptedSettings.kt` (see [java locale list](https://www.oracle.com/java/technologies/javase/jdk17-suported-locales.html)), create commit
- temporarily remove `minimum_perc = 50` from `.tx/config`
- run `tx pull -a -f && rm briar-desktop/src/main/resources/strings/* && git restore briar-desktop/src/main/resources/strings/*`
- re-add `minimum_perc = 50` to `.tx/config`, append changes to last commit
* [x] Extensive testing
* [x] Update [changelog](https://code.briarproject.org/briar/briar-desktop/-/wikis/Changelog)
* [x] Prepare blog post announcing new features: Windows and Forums :tada: (website!102)
### Version bump
* [x] Change version in build config and metainfo.xml (!296)
* [x] Tag in Git (use `git tag -a -s <version-name>-beta -m "Briar Desktop <version-name>-beta"`) (https://code.briarproject.org/briar/briar-desktop/-/tags/0.4.0-beta)
* [x] GitLab CI builds release files automatically (https://code.briarproject.org/briar/briar-desktop/-/pipelines/13401)
### Deployment
* [x] Copy release files to desktop.briarproject.org (using [`update-binaries.sh`](https://code.briarproject.org/briar/briar-desktop-servers/-/blob/main/root/update-binaries.sh) with updated version code)
* [x] Rewrite and check that permalink points to correct version (don't forget to test and reload web server)
* [x] Update version and checksums (calculated using [`verify_hashsums.sh`](https://code.briarproject.org/briar/briar-desktop-servers/-/blob/main/verify_hashsums.sh)) on website (https://code.briarproject.org/briar/website/-/merge_requests/105)
* [x] Publish website
### PR
* [x] Inform 3rd party maintainers about release
* [x] Publish blog post
* [x] Post on social media ([Mastodon](), [Twitter](https://twitter.com/BriarApp/status/1620461035659337731)), useful [character counter](https://charactercounter.com/twitter)
* [x] Update screenshot on website
### Backlog
* [x] Update description, milestone and due date of #337
* [x] Re-enable auto-pull on Transifex under Resources > Auto update resources > add [url](https://code.briarproject.org/briar/briar-desktop/-/raw/main/briar-desktop/src/main/resources/strings/BriarDesktop.properties)Desktop 0.4.0Mikolai GütschowMikolai Gütschow2023-01-31https://code.briarproject.org/briar/briar/-/issues/2221Retire support for Android 42023-06-19T14:03:17ZakwizgranRetire support for Android 4We'll eventually need to drop support for Android 4 in order to be able to upgrade OkHttp (#2156). I don't think we should just raise our minSdkVersion and leave Android 4 users running an out-of-date version of Briar indefinitely. Inste...We'll eventually need to drop support for Android 4 in order to be able to upgrade OkHttp (#2156). I don't think we should just raise our minSdkVersion and leave Android 4 users running an out-of-date version of Briar indefinitely. Instead, we should set an expiry date and warn users that the app will stop working at that date, like we do with debug builds.
We should define a retirement period that ends at the expiry date, and release the following changes before the start of the retirement period, allowing enough time for most users to upgrade before the period starts:
* At the start of the retirement period, show a warning on Android 4 that Briar will stop working at the expiry date
* Refuse to start the app on Android 4 beyond the expiry date
The changes can be based on the existing code for expiring debug builds.
When the retirement period ends we can raise our min API level to 21 and upgrade OkHttp (and perhaps the emoji library, which also requires API 21 for the latest version, unless we've already resolved #2212 by switching to AppCompat for emoji).
If we release the changes above by the end of 2021, allow six months for users to upgrade before the retirement period starts, and allow another six months for the retirement period, then we can drop support for Android 4 at the end of 2022. (We can do everything faster than that if necessary, but I don't see any urgency.)
*Update:*
With !1577 and !1578 merged to master, the warning will show up on Android 4 on 2022-07-31. Briar will refuse to start on Android 4 on 2023-01-31.MailboxTorsten GroteTorsten Grote2023-01-31https://code.briarproject.org/briar/briar/-/issues/1822Import RSS feeds shared by other apps2023-03-15T12:35:33ZakwizgranImport RSS feeds shared by other appsImport RSS feeds shared as XML files by other apps.
This should use the same parsing and import logic as #1810.Import RSS feeds shared as XML files by other apps.
This should use the same parsing and import logic as #1810.RSS import2023-02-28https://code.briarproject.org/briar/public-mesh-research/-/issues/1Research communication via public mesh2023-09-12T12:23:17ZakwizgranResearch communication via public meshDevelop and evaluate one or more concepts for communicating over a "public mesh" (as opposed to Briar's "social mesh", where users only connect to their contacts). A delay-tolerant, publish-subscribe architecture with end-to-end encrypti...Develop and evaluate one or more concepts for communicating over a "public mesh" (as opposed to Briar's "social mesh", where users only connect to their contacts). A delay-tolerant, publish-subscribe architecture with end-to-end encryption is assumed.
Each concept must include solutions for:
* Discovering nearby peers
* Connecting to peers
* Deciding which data to sync with each peer
* Providing an API for user-facing components (e.g. messaging) to insert data into the mesh and be notified when relevant data is received
Concepts must be suitable for use on unrooted Android devices (taking into account current restrictions on device discovery). Ideally concepts should also be suitable for use on iOS and allow communication between Android and iOS.
Identify and evaluate any risks of passive information leaks or active attacks. Evaluate performance taking Briar's "social mesh" as a baseline.Public mesh research2023-04-30https://code.briarproject.org/briar/briar/-/issues/1817Research communication via public mesh2022-07-20T10:38:58ZakwizgranResearch communication via public meshDevelop and evaluate one or more concepts for communicating over a "public mesh" (as opposed to Briar's "social mesh", where users only connect to their contacts). A delay-tolerant, publish-subscribe architecture with end-to-end encrypti...Develop and evaluate one or more concepts for communicating over a "public mesh" (as opposed to Briar's "social mesh", where users only connect to their contacts). A delay-tolerant, publish-subscribe architecture with end-to-end encryption is assumed.
Each concept must include solutions for:
* Discovering nearby peers
* Connecting to peers
* Deciding which data to sync with each peer
* Providing an API for user-facing components (e.g. messaging) to insert data into the mesh and be notified when relevant data is received
Concepts must be suitable for use on unrooted Android devices (taking into account current restrictions on device discovery). Ideally concepts should also be suitable for use on iOS and allow communication between Android and iOS.
Identify and evaluate any risks of passive information leaks or active attacks. Evaluate performance taking Briar's "social mesh" as a baseline.Public mesh research2023-04-30https://code.briarproject.org/briar/briar-desktop/-/issues/555Upgrade tor to 0.4.8.92024-02-19T15:58:40ZSebastianUpgrade tor to 0.4.8.9Desktop 0.6.1SebastianSebastianhttps://code.briarproject.org/briar/briar/-/issues/2456Wich ports does the LanTcpPlugin use?2024-02-01T10:45:41ZJack oggWich ports does the LanTcpPlugin use?We are working on a Project to send Briar Messages through a LoRa Network and we used the `LanTcpPlugin` as a reference for our own LoRa Plugin How does Briar know wich port it should use to send a message via WiFi? We have two devices (...We are working on a Project to send Briar Messages through a LoRa Network and we used the `LanTcpPlugin` as a reference for our own LoRa Plugin How does Briar know wich port it should use to send a message via WiFi? We have two devices (Honor 6X). We figured out that one has `53099` as preferred port, the other has `55244` (in `org/briarproject/bramble/plugin/tcp/LanTcpPlugin.java`). But how do they agree on these ports?https://code.briarproject.org/briar/briar-desktop/-/issues/550Upgrade tor to 0.4.7.152024-02-19T14:26:42ZSebastianUpgrade tor to 0.4.7.15Desktop 0.6.1https://code.briarproject.org/briar/briar-desktop/-/issues/549Release 0.6.1-beta2024-02-20T17:05:46ZSebastianRelease 0.6.1-betasee #543 as reference
### Preparation
* [x] ~~String freeze (disable auto-pull) and announcement on Transifex at least a week before the release~~
* [x] Update translations (https://code.briarproject.org/briar/briar-desktop/-/merge_req...see #543 as reference
### Preparation
* [x] ~~String freeze (disable auto-pull) and announcement on Transifex at least a week before the release~~
* [x] Update translations (https://code.briarproject.org/briar/briar-desktop/-/merge_requests/374)
- run `tx pull -a -f`, add new languages to `UnencryptedSettings.kt` (see [java locale list](https://www.oracle.com/java/technologies/javase/jdk17-suported-locales.html)), create commit
- temporarily remove `minimum_perc = 50` from `.tx/config`
- run `tx pull -a -f && git add -u && git clean -f`
- re-add `minimum_perc = 50` to `.tx/config`, append changes to last commit
* [x] Extensive testing
* [x] Update [changelog](https://code.briarproject.org/briar/briar-desktop/-/wikis/Changelog)
### Version bump
* [x] Change version in build config and metainfo.xml (!375)
* [x] Tag in Git (use `git tag -a -s <version-name>-beta -m "Briar Desktop <version-name>-beta"`) (https://code.briarproject.org/briar/briar-desktop/-/tags/0.6.1-beta) then `git push origin <tag_name>`
* [x] GitLab CI builds release files automatically (https://code.briarproject.org/briar/briar-desktop/-/pipelines/16123)
### Deployment
* [x] Copy release files to desktop.briarproject.org (using [`update-binaries.sh`](https://code.briarproject.org/briar/briar-desktop-servers/-/blob/main/root/update-binaries.sh) with updated version code (stable pipelines links were broken at this time, so using pipeline ids for Windows and Linux instead)
* [x] Download macOS zip files from CI pipeline, sign and notarize, copy to server manually
* [x] Rewrite and check that permalink points to correct version (don't forget to test and reload web server)
* [x] Update version and checksums (calculated using [`get_hashsums.sh`](https://code.briarproject.org/briar/briar-desktop-servers/-/blob/main/root/get_hashsums.sh) and then verified using [`verify_hashsums.sh`](https://code.briarproject.org/briar/briar-desktop-servers/-/blob/main/root/verify_hashsums.sh)) on website (https://code.briarproject.org/briar/website/-/merge_requests/130)
* [x] Publish website
### PR
* [x] Inform 3rd party maintainers about release
* [ ] Publish blog post
* [ ] Post on social media ([Mastodon](https://fosstodon.org/@briar/110650543490188739), [Twitter](TWITTER)), useful [character counter](https://charactercounter.com/twitter)
* [ ] ~~Update screenshot on website~~
### Backlog
* [x] Update description, milestone and due date of #337
* [x] Re-enable auto-pull on Transifex under Resources > Auto update resources > add [url](https://code.briarproject.org/briar/briar-desktop/-/raw/main/briar-desktop/src/main/resources/strings/BriarDesktop.properties)Desktop 0.6.1https://code.briarproject.org/briar/briar/-/issues/2448Briar prompts for Bluetooth permission when toggling Tor connectivity2023-09-28T16:06:06ZakwizgranBriar prompts for Bluetooth permission when toggling Tor connectivity* Android version: 12
* Phone model: Samsung Galaxy A21s
* Briar version: 1.5.7 debug (6ae601e39588b47f157799c2e5a813786b56c3d8)
Steps to reproduce:
* Start from a fresh install (no Bluetooth permissions granted)
* Tap globe icon in nav...* Android version: 12
* Phone model: Samsung Galaxy A21s
* Briar version: 1.5.7 debug (6ae601e39588b47f157799c2e5a813786b56c3d8)
Steps to reproduce:
* Start from a fresh install (no Bluetooth permissions granted)
* Tap globe icon in nav menu to open connections screen
* Turn Tor connections off
* Turn Tor connections on again
Also happens when toggling wifi connections.https://code.briarproject.org/briar/tor-reproducer/-/issues/17Upgrade Tor to 0.4.7.152023-09-29T11:44:31ZakwizgranUpgrade Tor to 0.4.7.15Tor 0.4.7.15 contains a major bugfix for onion services.
https://forum.torproject.org/t/stable-release-0-4-7-15-and-0-4-8-6/9292
> This version contains an important fix for onion service regarding congestion control and its reliabil...Tor 0.4.7.15 contains a major bugfix for onion services.
https://forum.torproject.org/t/stable-release-0-4-7-15-and-0-4-8-6/9292
> This version contains an important fix for onion service regarding congestion control and its reliability. Apart from that, very minor bugfixes. We strongly recommend all onion service operators to update immediately.
>
> Major bugfixes (onion service):
> - Fix a reliability issue where services were expiring their
> introduction points every consensus update. This caused
> connectivity issues for clients caching the old descriptor and
> intro points. Bug reported and fixed by gitlab user
> @hyunsoo.kim676. Fixes bug 40858; bugfix on 0.4.7.5-alpha.akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/2446IllegalStateException in HotspotActivity2024-03-28T13:34:33ZakwizgranIllegalStateException in HotspotActivity* Android version: 13
* Phone model: OnePlus CPH2415 (CPH2415EEA)
* Briar version: 1.5.6 (b68d24d)
Stacktrace:
```
java.lang.IllegalStateException: LifecycleOwner org.briarproject.briar.android.hotspot.HotspotActivity@52aa2cb is attempt...* Android version: 13
* Phone model: OnePlus CPH2415 (CPH2415EEA)
* Briar version: 1.5.6 (b68d24d)
Stacktrace:
```
java.lang.IllegalStateException: LifecycleOwner org.briarproject.briar.android.hotspot.HotspotActivity@52aa2cb is attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.
at androidx.activity.result.ActivityResultRegistry.register(ActivityResultRegistry.java:123)
at androidx.activity.ComponentActivity.registerForActivityResult(ComponentActivity.java:817)
at androidx.activity.ComponentActivity.registerForActivityResult(ComponentActivity.java:826)
at org.briarproject.briar.android.hotspot.AbstractConditionManager.init(AbstractConditionManager.java:50)
at org.briarproject.briar.android.hotspot.HotspotIntroFragment.onCreateView(HotspotIntroFragment.java:79)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1890)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1817)
at androidx.fragment.app.FragmentManager.popBackStackImmediate(FragmentManager.java:871)
at androidx.fragment.app.FragmentManager.popBackStackImmediate(FragmentManager.java:778)
at androidx.fragment.app.FragmentManager.handleOnBackPressed(FragmentManager.java:699)
at androidx.fragment.app.FragmentManager$1.handleOnBackPressed(FragmentManager.java:429)
at androidx.activity.OnBackPressedDispatcher.onBackPressed(OnBackPressedDispatcher.java:192)
at androidx.activity.ComponentActivity.onBackPressed(ComponentActivity.java:657)
at android.app.Activity.onKeyUp(Activity.java:3926)
at android.view.KeyEvent.dispatch(KeyEvent.java:2933)
at android.app.Activity.dispatchKeyEvent(Activity.java:4304)
at androidx.core.app.ComponentActivity.superDispatchKeyEvent(ComponentActivity.java:124)
at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:86)
at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:142)
at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:601)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:60)
at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:3106)
at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:442)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:6870)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6731)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6186)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6248)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6209)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6379)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6217)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6436)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6190)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6248)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6209)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6217)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6190)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6248)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6209)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6412)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:6592)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3778)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:3291)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:3282)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3755)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:154)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:349)
at android.os.Looper.loopOnce(Looper.java:186)
at android.os.Looper.loop(Looper.java:351)
at android.app.ActivityThread.main(ActivityThread.java:8427)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
```
Looks like the crash happens when the back button is pressed, popping a fragment off the back stack and causing HotspotIntroFragment to be recreated.Android 1.4