* A user provided logs indicating that, during the attempt to open ZIM files, a crash occurred when stopping the TTS service. The logs revealed that, in the absence of any activity to stop the service, using `requireActivity()` resulted in an error and application crash. To address this issue, we replaced `requireActivity()` with `activity`. Now, if there is no activity present, using `activity` avoids the error that would lead to a crash.
* Addressed an issue with the `SaveSearchToRecentsTest` test, which occasionally failed. The primary cause of this was the recent modification to save the `RecentSearch` on a background thread using `coroutines`. In some cases, the test was validating the output before the coroutine completed its execution. Consequently, we have adjusted our test case to properly wait for the coroutine to finish its work before validating the output.
* The issue was with the `FileObserver` class constructor we used, which is introduced in SDK 29. As a result, it is not available for older versions, leading to a `NoSuchMethodError` when attempting to access it. This caused the application to crash below API level 29 when selecting external storage.
* We utilize `Play Asset Delivery` in our bundle, housing the ZIM file within it. The size of the wikispecies ZIM file is 2.13GB. To process all resources inside the bundle, we require a minimum of 6GB of Java heap memory.
* Fixed the badging of `Build Status` and `Codecov`.
* Since there is no `master` and `develop` branches, we have updated our `CONTRIBUTING.md` to reflect these changes.
* Upgraded the `WebKit` version to the latest (from 1.3.0 to 1.7.0) to leverage improvements and bug fixes. This update is essential to address the issue with the latest `chromium` dependency, as outlined in #3644.
* Additionally, elevated the `androidx.annotation:annotation` dependency from `1.1.0` to `1.2.0` to meet the requirements of the updated WebKit version.
* Removed the link from `zim_files_not_showing_description`.
* Modified the dialog for displaying the link in `PlayStoreRestrictionPopup`.
* Refactored the `rawTitleDescriptionMap`() method in `HelpFragment` to accommodate both strings and arrays for showing links inside the HelpFragment.
* We have excluded the universal APK from the variant list that is being uploaded to the Play Store.
* This exclusion is necessary because we cannot disable the universal APK, as it is required to set the version code for the bundle. Disabling the universal APK would result in the bundle version code being set exclusively for `x86_64`.
* This commit addresses the scenario where, for any reason, shared preferences and the database are retained on the device, and the list of ZIM files is visible in the library. However, the `MANAGE_EXTERNAL_PERMISSION` is not found, and when a user attempts to open a file, the application lacks the necessary permission. To improve this scenario, we now prompt the user for permission if it is not available when opening ZIM files from the library.
* Additionally, enhanced the behavior of the swipe refresh layout if the user clicks on the "NO" button in the permission dialog.
* We are using the `applicationContext` to start the `ErrorActivity`, which is outside the `Activity`. Therefore, to initiate the activity with an external context of the `Activity`, we must include the `FLAG_ACTIVITY_NEW_TASK` flag in the intent. Without this flag, the activity will not start.