Android In App Update не устанавливает APK после загрузки APK в немедленном режиме
Приложение использует немедленный режим для обновления приложения. Он начинает загрузку APK, но после загрузки APK не устанавливается. UI зависает с отображением прогресса загрузки 100%. В немедленном режиме нет обратной связи о том, что загрузка была завершена.
Как добиться автоматической загрузки, установки и перезапуска приложения для немедленного режима?
Я использую следующий режим, чтобы начать обновление в немедленном режиме.
try {
appUpdateManager.startUpdateFlowForResult(
appUpdateInfo,
AppUpdateType.IMMEDIATE,
getActivity(),
REQUEST_CODE_FOR_APP_UPDATE);
} catch (IntentSender.SendIntentException e) {
appUpdateFailed();
}
2 ответа
Попробуйте использовать onActivityResult(), вы можете проверить статус журнала, чтобы узнать, что произошло с вашим обновлением, и его код состояния. Или вы всегда можете использовать гибкое обновление вместо немедленного. Для получения дополнительной информации перейдите по этой ссылке
Если кто-то все еще сталкивается с этой проблемой, добавление слушателя в AppUpdateManager и перезапуск активности программно решили ее для меня.
Они обещают, что немедленный режим будет обрабатывать перезапуск приложения здесь при поддержке обновления приложений, но они этого не делают.
Немедленно: полноэкранный пользовательский интерфейс, который требует, чтобы пользователь обновил и перезапустил приложение, чтобы продолжить его использование. Этот пользовательский интерфейс лучше всего подходит для случаев, когда обновление критично для дальнейшего использования приложения. После того, как пользователь принимает немедленное обновление, Google Play выполняет установку обновления и перезапуск приложения.
Вот пример,
InstallStateUpdatedListener installStateUpdatedListener = new
InstallStateUpdatedListener() {
@Override
public void onStateUpdate(InstallState state) {
if (state.installStatus() == InstallStatus.DOWNLOADED){
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();
} else if (state.installStatus() == InstallStatus.INSTALLED){
if (appUpdateManager != null){
appUpdateManager.unregisterListener(installStateUpdatedListener);
}
}
}
};
Этот код просто отслеживает статус обновления, и после завершения загрузки он создает новое базовое намерение и завершает текущее. Таким образом вызывается "OnResume".
Зарегистрируйте этого слушателя в AppUpdateManager:
appUpdateManager.registerListener(installStateUpdatedListener);
PS: Я не умею отвечать на ТАК вопросы, но рад поделиться своим обходным путем.