Initial implementation of fully automatic updates, allowing apps to be
updated after a repo sync has been completed. It can be enabled with a
new preference in settings.
Implemented by greatly modifying SyncService to allow updates to be run
on every completed sync before notifications would be outputted. Note
that the update notification no longer appears if auto updates are
enabled.
BuildConfig.DEBUG is used to force syncing to run to completion, even if
there are no changes to the repos. This allow reliable testing by
turning the sync button into an "update all" button. This should be
removed once an "Update all" button has been implemented in the updates
tab.
Cache file checking in DefaultInstaller is now more robust.
Ensures that the cache file exists before attempting an install using
it. This fixes a crash that can occur if the file is not yet available,
likely due to an I/O-related race condition.
Reverts most changes to MainActivity and uses handleSpecialIntent
instead. handleSpecialIntent now defers installer prompt to
InstallerService by starting it again.
SpecialIntent has been modified to accommodate extra data needed to
handle these callbacks.
Fixes "tap to install" notification not launching an activity. Install
notifications moved to InstallerService so that we only show them for
apps that need intervention (and lets us preserve our install session).
All installs go to the installer, allowing for downloads to jump
straight into installation if possible (auto updates or showing prompt
on A9 and earlier). If a prompt is needed, the notification is still
shown.
Additional utility function checks if app is in the foreground. Used to
ensure that we do not launch a prompt that cannot be launched.
Miscellaneous comments have been added and improved.