This could definitely use a better design treatment, but at least it is
better than showing the "click to install" button again during the install
process.
closes#1357
This adds a new PendingInstall event which broadcasts that an install
process has started, but the state of it is not yet known, like
whether it needs to be downloaded still, or is ready to install. It
marks the very first step of the whole InstallManagerService process.
Installer events should only be directly related to the install process as
managed by the Installer set of classes. The newer AppStatusUpdate stuff
now tracks the whole lifecycle of the process.
This mostly reverts f0d6acd974548e24662a64271ae57922f74c3225 since there is
now the overarching concept of "Pending Install" to mark packages that are
somewhere in the whole process.
refs #828
refs #1357
For fullstack custom builds, they'll also need a whitelabel build of
Privileged Extension, which will have a different Application ID and
signing key than F-Droid Privileged Extension.
Before, if the Data/WiFi Settings made it so the update process is not
allowed to run and the device was not offline or in Airplane Mode, it would
show this Toast then it would show the "your device is offline" Toast.
This merges the triedEmptyUpdate preference into the lastUpdateCheck pref,
and uses that to determine whether the index update has ever run. It seems
that lastUpdateCheck used to be used for that, but was semi-disabled. Then
triedEmptyUpdate was added. This merges the two into lastUpdateCheck, which
also tracks the timestamp of the last index update.
The initial start time is getting pretty slow, so hopefully this will save
a little bit. It also makes it consistent with other places in the code,
like UpdateService.
This was doing a couple of things wrong:
* the scheduled job should always require a network, NONE doesn't work
* when the preferences change, it should cancel any scheduled job first,
so that if the user chooses to disable auto-updates, that takes effect
closes#1474closes#1451closes#1457
This changes the logic to only use a SharedPreference to track pending
installs, and to set the "pending install" mark as soon as possible
while waiting until final confirmation to unmark. Before, there was a
complicated combination of a SharedPreference and the use of the APK in the
cache as a mark.
!488
refs #962closes#1311closes#1031closes#1271
Since there are many ways to uninstall an app, including from Google
Play, {@code adb uninstall}, or Settings -> Apps, this method cannot
ever be sure that the app isn't already being uninstalled. So it
needs to check that we can actually get info on the installed app,
otherwise, just call it interrupted and quit.
closes#1435