Когда мы получаем обратный вызов InstallStatus.INSTALLED при использовании API-интерфейса обновления приложения для Android - PullRequest
0 голосов
/ 06 ноября 2019

Я работаю с API-интерфейсом in-app-update для Android, но не получаю обратного вызова в случае InstallStatus.INSTALLED. Я получаю обратный вызов для случая InstallStatus.DOWNLOADED. А также я могу успешно обновить приложение, но я хочу выполнить некоторую логику в случае InstallStatus.INSTALLED. Так как и когда я должен получить обратный вызов для случая InstallStatus.INSTALLED.

Мой InstallStateUpdatedListener

class AppInstallStateUpdatedListener implements InstallStateUpdatedListener {

        private AppUpdateManager appUpdateManager;
        private View anchorView;

        AppInstallStateUpdatedListener(AppUpdateManager appUpdateManager, View anchorView) {
            this.appUpdateManager = appUpdateManager;
            this.anchorView = anchorView;
        }

        @Override
        public void onStateUpdate(InstallState state) {
            if (state.installStatus() == InstallStatus.DOWNLOADED) {
                popupSnackbarForCompleteUpdate(anchorView);

                Toast.makeText(context,"Downloaded in app update", Toast.LENGTH_SHORT).show();
            } else if (state.installStatus() == InstallStatus.INSTALLED) {
                Toast.makeText(context,"Installed in app update", Toast.LENGTH_SHORT).show();
                if (appUpdateManager != null) {
                    appUpdateManager.unregisterListener(this);
                }
            } else {
                Log.i(InAppUpdateUtils.class.getSimpleName(), "InstallStateUpdatedListener: state: " + state.installStatus());
            }
        }
    }

Это то, как я присоединяю слушателя (у меня есть класс "InAppUpdateUtils",внутри его конструктора я инициализирую appUpdateManager и подключаю к нему прослушиватель) Ниже приведен конструктор.

public InAppUpdateUtils(Activity activity, View anchorView) {
        appUpdateManager = AppUpdateManagerFactory.create(activity);
        if (listener == null) {
            listener = new AppInstallStateUpdatedListener(appUpdateManager, anchorView);
            appUpdateManager.registerListener(listener);
        }
    }

Вот как я запускаю установку

private void popupSnackbarForCompleteUpdate(View anchorVIew) {
        Snackbar snackbar =
                Snackbar.make(
                        anchorVIew,
                        "We have downloaded an update",
                        Snackbar.LENGTH_INDEFINITE);
        snackbar.setAction("INSTALL", v -> {

            updateCompleteTask = appUpdateManager.completeUpdate();
            if (updateCompleteTask != null) {
                updateCompleteTask.addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void result) {

                        Toast.makeText(QuikrApplication.context, "Install Success", Toast.LENGTH_LONG).show();
                        Log.d("APP_UPDATE", "Update install success");
                    }
                });
                updateCompleteTask.addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(Exception e) {
                        Toast.makeText(context, "Install Failed", Toast.LENGTH_LONG).show();
                        Log.d("APP_UPDATE", "Update install failed " + e.toString());
                    }
                });
            }
        });
        TextView tv = snackbar.getView().findViewById(com.google.android.material.R.id.snackbar_text);
        tv.setTextColor(Color.WHITE);
        snackbar.setActionTextColor(anchorVIew.getContext().getResources().getColor(R.color.green));
        snackbar.show();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...