Я работаю с 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();
}