Commit graph

400 commits

Author SHA1 Message Date
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
Torsten Grote
326fc32f7a
Merge pull request #105 from steadfasterX/patch-1
add requirements topic
2020-08-04 15:02:04 -03:00
stay steadfast
18c1baaacd
set to Android 10 only
.. as it is unclear if A11 and/or later will be supported
2020-07-31 15:57:17 +02:00
stay steadfast
0e7fca896a
add requirements topic
let users know that A10 or higher is needed
2020-07-27 10:48:15 +02:00
Steve Soltys
a585324c71
Merge pull request #75 from stevesoltys/develop
Merge develop into master
2020-03-07 15:50:20 -05:00
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
Steve Soltys
60e84808c5
Merge pull request #73 from grote/notification-fix
Fix Notification icon and hide navigation bar in SetupWizard
2020-01-22 14:31:23 -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
Steve Soltys
ee6d359c50
Merge pull request #72 from grote/70-app-backup-toggle
Allow the user to exclude apps from backup
2020-01-20 14:03:44 -05: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
Steve Soltys
3ae600ea8e
Merge pull request #71 from grote/69-app-backup-status
Show list of apps and their backup status
2020-01-19 12:50:46 -05: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
Steve Soltys
6afdb7f4f7
Merge pull request #67 from grote/51-removable-storage-ux
Improve UX for auto-restore when using removable storage
2020-01-17 18:39:50 -05:00
Steve Soltys
97f82bc79e
Merge pull request #64 from grote/apk-backups
Optional App APK Backups
2020-01-14 23:58:40 -05: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