Я внедряю обновление In-App для Android. Проблема, с которой я сталкиваюсь, заключается в том, что пользователь убивает приложение во время обновления приложения и снова открывает его .
Нужно сделать:
При повторном открытии приложения мне нужно показать состояние установки в соответствии с типом обновления, но, похоже, нет способа дифференцировать тип выполняемого обновления.
Если состояние установки - InstallStatus.DOWNLOADED
, а тип обновления - «Гибкий», мне нужно показать снэк-бар пользователю, сообщив, что обновление было загружено с действием установки.
И если для типа обновления установлено значение Немедленное и выполняется обновление, мне нужно продолжить работу с экраном обновления 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();
}
}