Commit graph

184 commits

Author SHA1 Message Date
Torsten Grote
f6ea5c1db5 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-10-22 03:22:49 +05:30
Torsten Grote
a425ae706e 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-10-22 03:22:49 +05:30
Torsten Grote
d2c426db93 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-10-22 03:22:49 +05:30
Torsten Grote
740fe53a52 Improve DocumentsProvider tests against Nextcloud 2020-10-22 03:22:49 +05:30
Torsten Grote
897fd8473e Explain better how we force initialization via the SettingsManager 2020-10-22 03:22:49 +05:30
Torsten Grote
77ce3f6fe8 Make app blacklist accessible by multiple threads
Might fix #83
2020-10-22 03:22:49 +05:30
Torsten Grote
0b6742df44 Only consider apps that really opt-out of backup for early APK backup 2020-10-22 03:22:49 +05:30
Torsten Grote
a63a893a61 Ensure streams get closed eventually 2020-10-22 03:22:49 +05:30
Torsten Grote
5515e5c88f Fix icon color of storage locations (Nextcloud icon got tinted) 2020-10-22 03:22:49 +05:30
Torsten Grote
30e66f368e Make PluginTest work for Nextcloud as well
Only issue left was a different maximum file name length for Nextcloud
2020-10-22 03:22:49 +05:30
Torsten Grote
2958c8fac8 Replace all instances of DocumentFile#findFile with #findFileBlocking
Also start sticking closer to the official Kotlin formatting style
2020-10-22 03:22:49 +05:30
Torsten Grote
18d83767b3 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-10-22 03:22:49 +05:30
Torsten Grote
131c5b6b29 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-10-22 03:22:49 +05:30
Torsten Grote
22aaaeb1fd Add instrumentation tests for storage plugin (SAF) 2020-10-22 03:22:49 +05:30
Torsten Grote
2f62e9515c Upgrade gradle 2020-10-22 03:22:49 +05:30
Michael Bestas
b563893304 String improvements
* Don't use camel case, following AOSP applications
* Set app name and Nextcloud as untranslatable
2020-10-22 03:22:49 +05:30
Robin Schneider
f5f341b7b7 Remove wrongly inserted "g" char from AndroidManifest.xml
Introduced in: 78e217c7d8
2020-10-22 03:22:49 +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
Torsten Grote
de16032905
Don't use wildcard imports, because they are considered harmful 2020-01-14 15:40:56 -03:00
Torsten Grote
6ed522bfb7
Show one single progress bar in the notification
Also don't show individual package results,
but a single dismissible status notification in the end.

Closes #59, #61
2020-01-14 15:18:16 -03:00
Torsten Grote
2bcf82d607
Show heads-up notification when auto-restore fails due to removed storage 2020-01-14 10:17:38 -03:00
Torsten Grote
783e676be2
Optimize the restore of a single application (e.g. auto restore)
This restores only the @pm@ keys that are really needed
and thus speeds up installation with auto restore considerably
when using cloud storage such as NextCloud for example.
2020-01-14 10:17:37 -03:00
Torsten Grote
43184f4d23
Add note to auto-restore setting in case removable storage is used
This warns the user that auto-restore will only work when their storage
is plugged in.
2020-01-14 10:17:37 -03:00
Torsten Grote
22be36e2a7
When an app could not be restored, show the likely reason for it 2020-01-14 10:11:17 -03:00
Torsten Grote
74183d40d6
Add system app flag to metadata and check before installing system apps
that they are present as an older system app on the restore system.

Also ignore system apps without data to backup.
2020-01-14 10:11:17 -03:00
Torsten Grote
2a4ff39531
Simplify PackageService and use standard PackageManager
@stevesoltys this removes your old way of retreiving installed packages
via getInstalledPackages(0, UserHandle.USER_SYSTEM) as I couldn't find a
difference to the official way.

Also IGNORED_PACKAGES isn't needed anymore since
filterAppsEligibleForBackupForUser() already filters those out.
2020-01-14 07:45:41 -03:00
Torsten Grote
fea53a759f
Also back-up APKs of apps that are not allowed to have their data backed up 2020-01-14 07:45:41 -03:00
Torsten Grote
3d296e1335
Also back up APKs of apps that have no data or are above quota
This should also affect apps that have other errors during the backup
process, but it does not affect apps that opt-out of backup completely.

First part of #65
2020-01-14 07:45:41 -03:00
Torsten Grote
3f73119b52
Show restore data progress bar and improve readability of log messages 2020-01-14 07:45:40 -03:00
Torsten Grote
1924db7779
Move date restore view state into ViewModel to survive configuration changes 2020-01-14 07:45:40 -03:00
Torsten Grote
5632f11878
Show when package restore failed 2020-01-14 07:45:40 -03:00
Torsten Grote
9f01d09962
Don't get or write to full backup output stream before we are not sure there will be data to write 2020-01-14 07:45:39 -03:00
Torsten Grote
7b27242625
Show apps that we could not restore data for 2020-01-14 07:45:39 -03:00
Torsten Grote
690017c050
Only back up APK and write metadata when app was actually backed up
Apps that have nothing to back up start a backup but then get a call to cancelFullBackup()
and never even call finishBackup().
Do not write metadata for such apps, the call got moved to finishBackup().
2020-01-14 07:45:39 -03:00
Torsten Grote
2f352fe828
Show list of packages that we could restore data for 2020-01-14 07:45:39 -03:00
Torsten Grote
96a4642f4f
Show list of re-installed apps and let the user review it before restoring data 2020-01-14 07:45:38 -03:00
Torsten Grote
debaca0e2c
Ignore RestoreSets with no last backup time 2020-01-14 07:45:38 -03:00
Torsten Grote
f562857514
Expose APK backup feature as a setting, so the user can disable it
The user might not want to have their apps copied to the storage,
because it is very slow or for other reasons.
2020-01-14 07:45:38 -03:00
Torsten Grote
7605762631
Re-install backed-up APKs before restoring from backup 2020-01-14 07:45:37 -03:00
Torsten Grote
569e3db385
Fix device initialization and generation of new backup tokens 2020-01-14 07:45:37 -03:00
Torsten Grote
81c2031ce7
Back up APKs to storage (when they changed) and save metadata about them 2020-01-14 07:45:37 -03:00