Как определить, какой тип обновления выполняется?

Я внедряю обновление 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();
        }

    }

0 ответов

Другие вопросы по тегам