0

我想实现应用内更新。使用以下代码,它会正确提示用户要求他同意更新,下载代码并安装它。但随后系统会重新启动先前安装的应用程序版本,并再次进行更新过程。以下代码有什么问题?

onCreate()方法中:

        appUpdateManager = AppUpdateManagerFactory.create(this);
        Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
        appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
            if (mPrefs == null) {
                mPrefs = getSharedPreferences("******" + appName, Context.MODE_PRIVATE);
            }
            int updateRequestCounter = mPrefs.getInt("updateRequestCounter", 0);

            if ((updateRequestCounter == 0) || (updateRequestCounter == 5) || (updateRequestCounter % 10 == 0)) {
                if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE) {
                    switch (appUpdateInfo.installStatus()) {
                        case InstallStatus.FAILED: case InstallStatus.REQUIRES_UI_INTENT: case InstallStatus.UNKNOWN:
                            try {
                                appUpdateManager.startUpdateFlowForResult(
                                        appUpdateInfo,
                                        AppUpdateType.IMMEDIATE,
                                        this,
                                        MY_REQUEST_CODE);
                            } catch (IntentSender.SendIntentException e) {
                                e.printStackTrace();
                            }
                            break;
                        default:
                            break;
                    }
                }
                mPrefs.edit().putInt("updateRequestCounter", 0).apply();

            } else {
                mPrefs.edit().putInt("updateRequestCounter", ++updateRequestCounter).apply();
            }
    });

不知道这是否是原因:我使用此代码不是用于生产版本,而是用于应用程序的内部测试版本。

4

1 回答 1

0

您缺少更新安装部分。您需要致电appUpdateManger.completeUpdate()安装更新。AppUpdateManager 将为您重新启动应用程序。

在您的应用程序的发布版本中测试更新安装。

于 2019-09-13T07:10:49.153 回答