Как определить, какой тип обновления выполняется?
Я внедряю обновление In-App для Android. Проблема, с которой я сталкиваюсь, заключается в том, что пользователь убивает приложение во время обновления приложения и снова открывает его.
Нужно сделать:
При повторном открытии приложения мне нужно показать состояние установки в соответствии с типом обновления, но, похоже, нет способа дифференцировать тип выполняемого обновления.
Если состояние установки InstallStatus.DOWNLOADED
и тип обновления является гибким, мне нужно показать Snackbar пользователю, сообщив, что обновление было загружено с действием установки. И если тип обновления - Немедленное, и обновление выполняется, мне нужно продолжить с экрана обновления Google Immediate.
Что случилось
Я добавил этот код в обратный вызов onStart моей деятельности. Когда выполняется обновление типа Flexible (не загружено), оно происходит в другом случае каждый раз, получая доступность обновления UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS
,
public void checkIfUpdateInProgress() {
mAppUpdateManager.getAppUpdateInfo().addOnSuccessListener(appUpdateInfo -> {
mAppUpdateInfo = appUpdateInfo;
if (appUpdateInfo.installStatus() == InstallStatus.DOWNLOADED) {
showUpdateDownloadedSnackbar();
} else if (appUpdateInfo.updateAvailability()
== UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
requestImmediateUpdate();
}
});
}
public void requestImmediateUpdate() {
try {
mAppUpdateManager.startUpdateFlowForResult(
// Pass the intent that is returned by 'getAppUpdateInfo()'.
mAppUpdateInfo,
// Or 'AppUpdateType.FLEXIBLE' for flexible updates.
AppUpdateType.IMMEDIATE,
// The current activity making the update request.
MyJsActivity.this,
// Include a request code to later monitor this update request.
REQUEST_CODE_APP_UPDATE_IMMEDIATE);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}