Как определить, какой тип обновления выполняется? - PullRequest
1 голос
/ 06 июня 2019

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

    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...