Commit graph

307 commits

Author SHA1 Message Date
Torsten Grote
2cde417c8c
Add config option to re-install apps with feature modules only on same device
There is a possibility that incompatible APK splits make a an app crash when starting after re-installing it.
With that config option each OEM can decide with they want to take this risk or not.
2020-10-22 08:00:55 -03:00
Torsten Grote
e6723093c9
Android Studio 4.1 and changes to test files 2020-10-22 08:00:54 -03:00
Torsten Grote
a833df2165
Show dialog explaining auto-restore after a restore failed due to not all apps being installed 2020-10-22 08:00:54 -03:00
Torsten Grote
0f0f198228
Add unit tests for re-installing apps with APK splits 2020-10-13 16:19:05 -03:00
Torsten Grote
608e67cb65
Refactor existing ApkRestore unit tests to make adding new ones easier 2020-10-13 16:19:05 -03:00
Torsten Grote
b3db859b40
Re-install APK splits if they are compatible and have proper hash 2020-10-13 16:07:19 -03:00
Torsten Grote
68a6403c4b
Add a compatibility checker for APK splits
that tries to figure out compatibility only based on the name of the split.
This is not an exact science and there might be errors, but we hope to correctly identify most cases that matter in practice.
2020-10-13 16:07:19 -03:00
Torsten Grote
3487c91ba3 Do not re-install apps that require splits
The app will be shown as failed during restore and the user will be given the opportunity to re-install it manually via an installed ap store
2020-10-13 18:32:04 +05:30
Torsten Grote
643247b600 Change UI for re-installation of system apps
We are re-installing system apps if they are present on the restore device as a system app and have a newer version code.
Before, when one of those conditions is not true, we were showing a failure and gave the user the option to re-install the app from an app store.
Now, we don't offer the manual re-install option anymore and only show a success when a newer or same version of the system app is already installed.
2020-10-13 18:32:04 +05:30
Torsten Grote
0971c5db19 Do not back up APKs of test-only apps, as we can not re-install them anyway
The flag to allow installation gets filtered out after we set it:
http://aosp.opersys.com/xref/android-11.0.0_r5/xref/frameworks/base/services/core/java/com/android/server/pm/PackageInstallerService.java#544
2020-10-13 18:32:04 +05:30
Torsten Grote
0a8a286826 Update state of opt-out apps, even if they never had any state 2020-10-13 18:32:04 +05:30
Torsten Grote
a9402f4644 Update app install state after user comes back from manually installing an app
This way, the list of failed apps ideally keeps shrinking, allowing the user to see which apps are still left in a failed state.
2020-10-13 18:32:04 +05:30
Torsten Grote
1a81e2ddd6 If possible, open the app store an app was originally installed with
When an app fails to install during restore, we offer the option to manually install it.
If this doesn't happen with the same app store,
it is likely that the installed app will have a different signature (e.g. Aurora vs. F-Droid).
If the signature doesn't match, the data restore will fail.
Therefore, we attempt to let the user only use the same store for re-install.

There's a known issue that F-Droid doesn't report the proper package name:
https://gitlab.com/fdroid/fdroidclient/-/issues/2085
2020-10-13 18:32:04 +05:30
Torsten Grote
d6cb34c211 Allow the user to manually re-install apps before data restore starts
When one or more apps fail to install, the user is shown a dialog explaining that we need the apps installed in order for restore to work.
After the dialog is dismissed, the list of apps is resorted so failed apps are at the top. They are made clickable and the user is brought to an app store to re-install them.
2020-10-13 18:32:04 +05:30
Torsten Grote
747384fb59 Refactor InstallResult to be more extensible 2020-10-13 18:32:04 +05:30
Torsten Grote
f45411d81b Refactor code related to APK installs as preparation for upcoming changes 2020-10-13 18:32:04 +05:30
Torsten Grote
9830d2db95 Show different app state messages for backup and restore 2020-10-13 18:32:04 +05:30
Torsten Grote
3a31e09a04 Back up split APKs as well and store them in the metadata
This will enable us to check compatibility of the splits with the restore device and if compatible, re-install them.
2020-10-13 18:32:04 +05:30
Torsten Grote
af2bf4f60a Support APK splits in metadata 2020-10-13 18:32:04 +05:30
Torsten Grote
46e8a46c63 Pull out code in ApkBackup and ApkRestore into own methods 2020-10-13 18:32:04 +05:30
Torsten Grote
741e5ef1a0 Fix storage chooser title if the translation is long 2020-10-08 19:27:51 +05:30
Torsten Grote
9ae3c6e835 Add some documentation to the transport methods 2020-10-08 19:27:51 +05:30
Torsten Grote
fbdfa40300 Load app status data off the UI thread
Previously, the data was loaded on the UI thread which produced a
visible freeze after clicking "App backup status".
2020-10-08 19:27:51 +05:30
Torsten Grote
0612f79195 Fix or permit certain disk reads on UI thread 2020-10-08 19:27:51 +05:30
Torsten Grote
1d2c74bf2c Ensure that metadata cache streams get closed 2020-10-08 19:27:51 +05:30
Torsten Grote
4387353227 Enable StrictMode for userdebug builds 2020-10-08 19:27:51 +05:30
Torsten Grote
948cd597d8 Show proper transport labels for OS transport selection
If an AOSP-based ROM allows the user to choose a backup transport, these labels will be shown.
2020-10-08 19:27:51 +05:30
Torsten Grote
6c531066e7 Enable automatic coding style linting with ktlint (also on CI)
This way the coding style is guaranteed to stay consistent.
2020-10-07 19:44:05 +05:30
Torsten Grote
53937bda2f Auto-format code style of all files to match official style
This also adds a note to the README
and the Android Studio coding style files.
2020-10-07 19:44:05 +05:30
Torsten Grote
55909ce305 Fix lint issues with translations and ignore missing translations
as weblate doesn't seem to have a way to only import completed
translations.
2020-10-07 19:01:39 +05:30
Torsten Grote
d2ed3a10f0 Fix dependency issues by strictly requiring specific versions
Otherwise gradle pulls in newer versions of some libraries that require
a newer Kotlin version at runtime and then make the app crash.

This also moves the dependency declarations into a dedicated file.
2020-10-07 19:01:39 +05:30
Torsten Grote
57f404281c Fix lint warnings 2020-10-07 19:01:39 +05:30
Torsten Grote
af4b6807f2 Fix compile warnings on AOSP 11 2020-10-07 19:01:39 +05:30
Torsten Grote
ceac5fc5ce Clean up koin-android dependencies and upgrade koin 2020-10-07 19:01:39 +05:30
Torsten Grote
cfcf7b35ba Clean up BIP39 dependencies 2020-10-07 19:01:39 +05:30
Torsten Grote
6cde6be997 Sync AndroidX dependencies with those available in AOSP 2020-10-07 19:01:39 +05:30
Torsten Grote
8f91138e9f Remove dependency on commons-io library 2020-10-07 19:01:39 +05:30
Torsten Grote
8bdbe6d681 Handle new FLAG_DATA_NOT_CHANGED for K/V backups 2020-10-07 19:01:39 +05:30
Torsten Grote
25695d72b8 Fix storage selection screen (icon color and available bytes) 2020-10-07 19:01:39 +05:30
Torsten Grote
918d7a712a Add QUERY_ALL_PACKAGES permission which is now needed on Android 11 2020-10-07 19:01:39 +05:30
Torsten Grote
6e58ec0340 Fix instrumentation tests on Android 11 2020-10-07 19:01:39 +05:30
Torsten Grote
45ac8883a0 Fix roboelectric unit tests 2020-10-07 19:01:39 +05:30
Torsten Grote
415b5729d5 Bump AOSP versions for gradle build 2020-10-07 19:01:39 +05:30
Torsten Grote
ca309df03d Upgrade AOSP libraries for gradle build 2020-10-07 19:01:39 +05:30
Chirayu Desai
680ad8b7db Fix translations manually, replacing &lt;&gt; by <>
* Previous attempt via weblate failed, let's just do it here this way
2020-09-25 20:05:15 +05:30
Hosted Weblate
7af61ac92d Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/
Translation: CalyxOS/Seedvault
2020-09-25 20:05:15 +05:30
Chirayu Desai
ddc13516d3 Translated using Weblate (French)
Currently translated at 80.3% (90 of 112 strings)

Translated using Weblate (Icelandic)

Currently translated at 81.8% (90 of 110 strings)

Translated using Weblate (Spanish (American))

Currently translated at 80.9% (89 of 110 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 78.1% (86 of 110 strings)

Translated using Weblate (French)

Currently translated at 81.8% (90 of 110 strings)

Co-authored-by: Chirayu Desai <chirayudesai1@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/es_US/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/fr/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/is/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/nb_NO/
Translation: CalyxOS/Seedvault
2020-09-25 20:05:15 +05:30
ssantos
d1e4cdb137 Translated using Weblate (Portuguese)
Currently translated at 100.0% (110 of 110 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/pt/
Translation: CalyxOS/Seedvault
2020-09-25 20:05:15 +05:30
Milo Ivir
688753d55f Translated using Weblate (Croatian)
Currently translated at 100.0% (110 of 110 strings)

Co-authored-by: Milo Ivir <mail@milotype.de>
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/hr/
Translation: CalyxOS/Seedvault
2020-09-25 20:05:15 +05:30
Michael Bestas
4dbb73aaaf Translated using Weblate (Greek)
Currently translated at 100.0% (110 of 110 strings)

Co-authored-by: Michael Bestas <mkbestas@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/el/
Translation: CalyxOS/Seedvault
2020-09-25 20:05:15 +05:30
H
1aef02e1ed Translated using Weblate (Spanish)
Currently translated at 99.0% (109 of 110 strings)

Co-authored-by: H <joaquinfc@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/es/
Translation: CalyxOS/Seedvault
2020-09-25 20:05:15 +05:30
Nikita Epifanov
a0c70293aa Translated using Weblate (Russian)
Currently translated at 100.0% (110 of 110 strings)

Co-authored-by: Nikita Epifanov <nikgreens@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/ru/
Translation: CalyxOS/Seedvault
2020-09-25 20:05:15 +05:30
Samuel Carvalho de Araújo
fc35acadb9 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (110 of 110 strings)

Co-authored-by: Samuel Carvalho de Araújo <samuelnegro12345@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/pt_BR/
Translation: CalyxOS/Seedvault
2020-09-25 20:05:15 +05:30
Hosted Weblate
f636831f9e Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 79.6% (86 of 108 strings)

Translated using Weblate (Spanish)

Currently translated at 99.0% (107 of 108 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 72.2% (78 of 108 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 14.8% (16 of 108 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 94.4% (102 of 108 strings)

Translated using Weblate (Russian)

Currently translated at 7.4% (8 of 108 strings)

Translated using Weblate (Russian)

Currently translated at 6.4% (7 of 108 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 3.7% (4 of 108 strings)

Translated using Weblate (German)

Currently translated at 70.3% (76 of 108 strings)

Translated using Weblate (Icelandic)

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (Spanish (American))

Currently translated at 97.2% (105 of 108 strings)

Translated using Weblate (Spanish)

Currently translated at 34.2% (37 of 108 strings)

Translated using Weblate (Italian)

Currently translated at 60.1% (65 of 108 strings)

Translated using Weblate (Italian)

Currently translated at 38.8% (42 of 108 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 94.4% (102 of 108 strings)

Translated using Weblate (German)

Currently translated at 10.1% (11 of 108 strings)

Translated using Weblate (French)

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (French)

Currently translated at 65.7% (71 of 108 strings)

Added translation using Weblate (Dutch)

Added translation using Weblate (Zulu)

Added translation using Weblate (Chinese (Traditional, Hong Kong))

Added translation using Weblate (Chinese (Traditional))

Added translation using Weblate (Chinese (Simplified))

Added translation using Weblate (Vietnamese)

Added translation using Weblate (Uzbek)

Added translation using Weblate (Urdu)

Added translation using Weblate (Ukrainian)

Added translation using Weblate (Turkish)

Added translation using Weblate (Tagalog)

Added translation using Weblate (Thai)

Added translation using Weblate (Telugu)

Added translation using Weblate (Tamil)

Added translation using Weblate (Swahili)

Added translation using Weblate (Swedish)

Added translation using Weblate (Serbian (latin))

Added translation using Weblate (Serbian)

Added translation using Weblate (Albanian)

Added translation using Weblate (Slovenian)

Added translation using Weblate (Slovak)

Added translation using Weblate (Sinhala)

Added translation using Weblate (Romanian)

Added translation using Weblate (Portuguese (Portugal))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese)

Added translation using Weblate (Polish)

Added translation using Weblate (Punjabi)

Added translation using Weblate (Odia)

Added translation using Weblate (Nepali)

Added translation using Weblate (Burmese)

Added translation using Weblate (Malay)

Added translation using Weblate (Marathi)

Added translation using Weblate (Mongolian)

Added translation using Weblate (Malayalam)

Added translation using Weblate (Macedonian)

Added translation using Weblate (Latvian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lao)

Added translation using Weblate (Kyrgyz)

Added translation using Weblate (Korean)

Added translation using Weblate (Kannada)

Added translation using Weblate (Central Khmer)

Added translation using Weblate (Kazakh)

Added translation using Weblate (Georgian)

Added translation using Weblate (Japanese)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Indonesian)

Added translation using Weblate (Armenian)

Added translation using Weblate (Hungarian)

Added translation using Weblate (Croatian)

Added translation using Weblate (Galician)

Added translation using Weblate (French (Canada))

Added translation using Weblate (Finnish)

Added translation using Weblate (Persian)

Added translation using Weblate (Basque)

Added translation using Weblate (Estonian)

Added translation using Weblate (English (India))

Added translation using Weblate (English (United Kingdom))

Added translation using Weblate (English (Canada))

Added translation using Weblate (English (Australia))

Added translation using Weblate (Danish)

Added translation using Weblate (Czech)

Added translation using Weblate (Catalan)

Added translation using Weblate (Bosnian)

Added translation using Weblate (Bengali)

Added translation using Weblate (Bulgarian)

Added translation using Weblate (Belarusian)

Added translation using Weblate (Azerbaijani)

Added translation using Weblate (Assamese)

Added translation using Weblate (Amharic)

Added translation using Weblate (Afrikaans)

Added translation using Weblate (Spanish (American))

Added translation using Weblate (Spanish)

Added translation using Weblate (Arabic)

Added translation using Weblate (Italian)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Norwegian Bokmål)

Added translation using Weblate (Hindi)

Added translation using Weblate (Russian)

Added translation using Weblate (German)

Added translation using Weblate (Gujarati)

Added translation using Weblate (French)

Translated using Weblate (Greek)

Currently translated at 29.6% (32 of 108 strings)

Added translation using Weblate (Greek)

Co-authored-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Catherine Pierattini <catherine.pierattini@gmail.com>
Co-authored-by: CatieC <catie@calyxinstitute.org>
Co-authored-by: Chirayu Desai <chirayudesai1@gmail.com>
Co-authored-by: Daniel <dan.ef1999@gmail.com>
Co-authored-by: H <joaquinfc@protonmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Meili Huang <meilihuang1216@gmail.com>
Co-authored-by: Michael Bestas <mkbestas@gmail.com>
Co-authored-by: Mordur Aslaugarson <mordur@1984.is>
Co-authored-by: Nikita Epifanov <nikgreens@protonmail.com>
Co-authored-by: Robin Kunze <robinkunze@outlook.com>
Co-authored-by: Samuel Carvalho de Araújo <samuelnegro12345@gmail.com>
Co-authored-by: Santiago Cruz <scruz4@tuta.io>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/de/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/el/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/es/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/es_US/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/fr/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/is/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/it/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/ru/
Translate-URL: https://hosted.weblate.org/projects/calyxos/seedvault/zh_Hans/
Translation: CalyxOS/Seedvault
2020-09-25 20:05:15 +05:30
Torsten Grote
e3406613a6 Always show Nextcloud as an option, offer to install or set up account
Outside of SetupWizard restore, we don't offer to set up an account,
because we don't know if one already exists and the app was locked with
a passcode.
2020-09-25 06:05:47 +05:30
Torsten Grote
c5aca6dd51 Fix status reporting of failed system app restore 2020-09-25 05:55:40 +05:30
Torsten Grote
d7ca8151fd User-initiated backups should also be incremental 2020-09-25 05:55:40 +05:30
Torsten Grote
8185b6af6e Bring the user to app system settings when long tapping apps 2020-09-25 05:55:40 +05:30
Torsten Grote
7f4761816e Show a different text for stopped apps in app backups status page 2020-09-25 05:55:40 +05:30
Torsten Grote
77550a9860 Treat stopped apps different from opt-out apps
Apps that have FLAG_STOPPED will not get backed up, just like apps
without flag ALLOW_BACKUP will not get backed up.
In the UI both cases are shown the same way: app does not allow backup
This can be confusing for the user as it is not true for stopped apps.
Therefore, this commit introduces a new stopped state for apps,
so we can differentiate between both cases.
2020-09-25 05:55:40 +05:30
Torsten Grote
3e176c8e1c Fix opt-out apps showing up as not yet backed up
This bug also caused APKs of opt-out apps not getting backed up.
2020-09-25 05:55:40 +05:30
Torsten Grote
9f2b56e4ce Fix bug where we could not do two subsequent restores
This probably never showed in practice, but it can be triggered easily
when testing with `adb shell bmgr restore`.
2020-09-18 00:22:45 +05:30
Torsten Grote
b594d30e2c Fix auto-service warning in instrumentation tests 2020-09-17 06:06:14 +05:30
Torsten Grote
9f49a39514 Don't use Kotlin reflection if not really necessary 2020-09-17 06:06:14 +05:30
Torsten Grote
42ab8ffba5 Cache folder contents in K/V backup/restore
This speeds up things significantly and was needed due to poor
performance of call log backup.
2020-09-17 06:06:14 +05:30
Michael Bestas
239b83196f Make seedvault compile in AOSP properly
* Add Android.bp to compile using AOSP build system instead of gradle
* Add prebuilt external libs that are not available on AOSP

Fixes #97

Co-authored-by: Chirayu Desai <chirayudesai1@gmail.com>
2020-09-11 19:04:38 +05:30
Michael Bestas
eb15fa93ed Upgrade androidx-lifecycle-livedata to 2.3.0-alpha05
* All previous aar versions have their modified date set to 0 which trigger
  the following openjdk bug:
  https://bugs.openjdk.java.net/browse/JDK-8184940
  This fixes the following compilation error while building in AOSP environment:

    java.time.DateTimeException: Invalid value for MonthOfYear (valid values 1 - 12): 0
2020-09-11 19:04:38 +05:30
Michael Bestas
4283630e26 Drop dependency on kotlin-android-extensions
* Not available on AOSP.
2020-09-11 19:04:38 +05:30
Torsten Grote
5afcd0d6e6 Don't use BuildConfig, because it is only available for gradle builds
and not in AOSP builds which will break
2020-09-11 19:04:38 +05:30
Torsten Grote
1cdc2be930 Don't let the user start a new backup when one is already in progress 2020-09-11 19:04:38 +05:30
Torsten Grote
43b24b5c29 Show notification for backup running in the background
The system triggers backup jobs periodically or when a package is
announcing that its data has changed. So far we were not showing
notifications for those. This commit shows a notification with an
indeterminate progress bar as we don't have any information about how
many packages will get backed up.
2020-09-11 19:04:38 +05:30
Torsten Grote
a39f697a96 Enable backup of call logs
It turned out that call log backup is already in AOSP, but it is
disabled by an undocumented flag. This commit sets this flag (for new
and existing installs) to enable call log backup.
2020-09-11 19:04:38 +05:30
Torsten Grote
79aaaf5908 When restoring, set token from RestoreSet as new token 2020-09-11 19:04:38 +05:30
Torsten Grote
1b9a4feddd Clean up backup transport initialization logic
This commit makes creating new RestoreSets explicit.
Initializing a backup transport now actually cleans its data as the AOSP
documentation demands. This should be fine as we usually do a fresh
backup after a new initialization.
Contrary to before, an initialization does not create new RestoreSets
anymore, but works within the existing set. For now, only manually
choosing a new storage location creates a new RestoreSet.
2020-09-11 19:04:38 +05:30
Torsten Grote
80187c8c70 Show percentages in progress notification and x of n status at the end
Fine-grained progress reporting causes apps to show up twice which is
confusing. Also @pm@ metadata and opt-out APKs are too much detail for
normal users. So we decided to only show a percentage in the progress
notification.

When the backup finished, the app now shows "x of n apps backed up"
which is more positive when the previous negative message of how many
apps were not backed up.

Some further minor tweets were done to app counting to report proper
totals.
2020-09-11 19:04:38 +05:30
Torsten Grote
983f917391 Let backup notification report more fine-grained progress
This adds @pm@ record backup and APK backup of opt-out apps to the
progress reporting since these two operations are slow when using a
cloud storage SAF backend.
2020-09-11 19:04:38 +05:30
Torsten Grote
7bda3eb12b Improve DocumentsProvider tests against Nextcloud 2020-09-11 19:04:38 +05:30
Torsten Grote
25962ed307 Explain better how we force initialization via the SettingsManager 2020-09-11 19:04:38 +05:30
Torsten Grote
3a717b109d Make app blacklist accessible by multiple threads
Might fix #83
2020-09-11 19:04:38 +05:30
Torsten Grote
73e969a0bd Only consider apps that really opt-out of backup for early APK backup 2020-09-11 19:04:38 +05:30
Torsten Grote
e7a13fdb5c Ensure streams get closed eventually 2020-09-11 19:04:38 +05:30
Torsten Grote
91daa8e051 Fix icon color of storage locations (Nextcloud icon got tinted) 2020-09-11 19:04:38 +05:30
Torsten Grote
e138e0a4e2 Make PluginTest work for Nextcloud as well
Only issue left was a different maximum file name length for Nextcloud
2020-09-11 19:04:38 +05:30
Torsten Grote
7fdefda85f Replace all instances of DocumentFile#findFile with #findFileBlocking
Also start sticking closer to the official Kotlin formatting style
2020-09-11 19:04:38 +05:30
Torsten Grote
f7df78d2f3 Check for loading cursor also when checking if files exist
Loading cursors can happen with cloud-based documents providers
such as Nextcloud.
When they return a cursor that is still loading,
we might continue with stale information.
So now we wait for a loading cursor to be fully loaded
before continuing.
2020-09-11 19:04:38 +05:30
Torsten Grote
b1b522807c Add test to reproduce the loading cursor phenomena with Nextcloud
See: https://commonsware.com/blog/2019/12/14/scoped-storage-stories-listfiles-woe.html
2020-09-11 19:04:38 +05:30
Torsten Grote
b505425525 Add instrumentation tests for storage plugin (SAF) 2020-09-11 19:04:38 +05:30
Torsten Grote
f68095a463 Upgrade gradle 2020-09-11 19:04:38 +05:30
Michael Bestas
46cd13a55c String improvements
* Don't use camel case, following AOSP applications
* Set app name and Nextcloud as untranslatable
2020-09-11 19:04:38 +05:30
Robin Schneider
a51fcfc0b4 Remove wrongly inserted "g" char from AndroidManifest.xml
Introduced in: 78e217c7d8
2020-09-11 19:04:38 +05:30
Steve Soltys
78e217c7d8 Bump version code in Android manifest 2020-03-07 15:46:02 -05:00
Steve Soltys
bd52749c76 Version bump - 1.0.0 2020-03-07 15:41:49 -05:00
Torsten Grote
65905a7160
Hide navigation bar in SetupWizard for more visual consistency 2020-01-22 12:31:14 -03:00
Torsten Grote
3cdd381b51
Don't cache notification builders to always show the right icon 2020-01-22 12:25:32 -03:00
Torsten Grote
c52d372442
Don't make the app immersive in SetupWizard
Fixes third item in #63
2020-01-20 11:58:38 -03:00
Torsten Grote
324da2a9e9
Allow the user to exclude apps from backup
Closes #70
2020-01-20 11:58:38 -03:00
Torsten Grote
c92b9a3606
Credit Glenn Sorrentino on About page 2020-01-20 10:01:44 -03:00
Torsten Grote
5d38f061d9
Make some app status list tweaks suggested by our designer Glenn 2020-01-20 09:53:51 -03:00
Torsten Grote
a98364efbe
Back up APKs as early as possible to not miss any
Fixes #68
2020-01-18 16:42:26 -03:00
Torsten Grote
fcf17fe23a
Show list of apps and their backup status 2020-01-18 16:38:55 -03:00