Начал экспериментировать с Обновления в приложении . Кажется, все работает префект.
Но ... при вводе некоторых крайних случаев, таких как, например, отмена процесса обновления в процессе загрузки обновления, API по какой-то причине перестает работать, как предполагалось.
Пример: я начинаю свою деятельность и первым делом в onResume () я делаю это:
//In app update code. Only works for Android 5.0 and above.
if (Build.VERSION.SDK_INT >= 21) {
AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(this);
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE) {
try {
appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE, this, 1333);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
} else if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
// If an in-app update is already running, resume the update.
try {
appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE,this, 1333);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
});
}
Когда я нажимаю кнопку Обновить и появляется экран для обновления, я немедленно отменяю обновление. Он возвращает с onActivityResult код запроса (1333) и код результата (STATUS_UNKNOWN = 0). Я вызываю finish () в операторе if, потому что это критическое обновление, которое необходимо обновить.
Проблема заключается в том, что при повторном входе в приложение onActivityResult запускается снова, не показывая никакого диалога из API обновления в приложении и просто возвращая код запроса / результата в обратном вызове onActivityResult.
Кто-нибудь с похожей проблемой?