应用程序内更新重新启动过时的版本,而不是新安装的版本



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

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();
}
});

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

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

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

最新更新