В Play Store установлена ​​новая версия приложения, но вместо обновления отображается кнопка «Открыть» - PullRequest
0 голосов
/ 28 января 2020

Принудительный код обновления не реализован в предыдущей версии. Поэтому я добавляю принудительный код обновления в новую версию (Version Code 6) и загруженную тестовую версию в Play Store. Сейчас для тестирования я создаю новую версию сборки кода 5 и устанавливаю ее на свое устройство. При входе в систему отображается всплывающее окно для обновления и отмены, но при нажатии на кнопку обновления происходит переход в игровой магазин, где вместо обновления есть кнопка открытия, хотя доступна более высокая версия. Я ищу и пробую разные методы, упомянутые в StackOverflow, но ни один из них не работает для меня. Пожалуйста, помогите мне решить эту проблему.

public class AppointActivity extends AppCompatActivity implements ForceUpdateChecker.OnUpdateNeededListener{
}


    private void redirectStore(String updateUrl) {
        final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(updateUrl));
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }

    @Override
    public void onUpdateNeeded( final String updateUrl) {

        AlertDialog dialog = new AlertDialog.Builder(this)//Alert dialog have implemetation have two options
                .setTitle("New version available")
                .setMessage("Please, update app to new version to continue searching.")
                .setPositiveButton("Update Now",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                redirectStore(updateUrl);
                            }
                        }).setNegativeButton("Later",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        }).create();
        dialog.setCancelable(true);
        dialog.show();
    }


public class ForceUpdateChecker {


    private static final String TAG = ForceUpdateChecker.class.getSimpleName();

    public static final String KEY_UPDATE_REQUIRED = "force_update_required";
    public static final String KEY_CURRENT_VERSION = "force_update_current_version";
    public static final String KEY_UPDATE_URL = "force_update_store_url";

    private OnUpdateNeededListener onUpdateNeededListener;
    private Context context;

    public interface OnUpdateNeededListener {
        void onUpdateNeeded(String updateUrl);
    }

    public static Builder with(@NonNull Context context) {
        return new Builder(context);
    }

    public ForceUpdateChecker(@NonNull Context context,
                              OnUpdateNeededListener onUpdateNeededListener) {
        this.context = context;
        this.onUpdateNeededListener = onUpdateNeededListener;
    }

    public void check() {
        final FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();

        if (remoteConfig.getBoolean(KEY_UPDATE_REQUIRED)) {
            String currentVersion = remoteConfig.getString(KEY_CURRENT_VERSION);
            String appVersion = getAppVersion(context);
            String updateUrl = remoteConfig.getString(KEY_UPDATE_URL);

            if (!TextUtils.equals(currentVersion, appVersion)
                    && onUpdateNeededListener != null) {
                onUpdateNeededListener.onUpdateNeeded(updateUrl);
            }
        }
    }

    private String getAppVersion(Context context) {
        String result = "";

        try {
            result = context.getPackageManager()
                    .getPackageInfo(context.getPackageName(), 0)
                    .versionName;
            result = result.replaceAll("[a-zA-Z]|-", "");
        } catch (PackageManager.NameNotFoundException e) {
            Log.e(TAG, e.getMessage());
            errorClass.logError(e);
        }
        return result;
    }

    public static class Builder {

        private Context context;
        private OnUpdateNeededListener onUpdateNeededListener;

        public Builder(Context context) {
            this.context = context;
        }

        public Builder onUpdateNeeded(OnUpdateNeededListener onUpdateNeededListener) {
            this.onUpdateNeededListener = onUpdateNeededListener;
            return this;
        }

        public ForceUpdateChecker build() {
            return new ForceUpdateChecker(context, onUpdateNeededListener);
        }

        public ForceUpdateChecker check() {
            ForceUpdateChecker forceUpdateChecker = build();
            forceUpdateChecker.check();

            return forceUpdateChecker;
        }
    }

}

Спасибо

Ответы [ 3 ]

4 голосов
/ 30 января 2020

Если вы установили свое приложение через adb или установили из других источников, в Google Play будет отображаться «Открыть» вместо «Обновление».

Если ваше приложение было установлено через Google Play или его следует установить через системное приложение, чтобы показать обновление в Google Play,

0 голосов
/ 28 января 2020

Это проблема магазина игр. У меня также есть такая же проблема. Если вы go вернетесь и снова go в то же приложение, вместо открытия будет отображаться кнопка обновления.

Off-topi c: Почему вы не используете InAppUpdate вместо своего кода? Для InAppUpdate, пожалуйста, воспользуйтесь ссылкой ниже моего ответа

{ ссылка }

Надеюсь, это поможет вам!

Спасибо.

0 голосов
/ 28 января 2020

Проверьте название и код версии в файле build.gradle уровня приложения. Вы можете проверить эту ссылку "https://github.com/hummatli/AndroidAppUpdater"

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