我想实现应用内更新。使用以下代码,它会正确提示用户要求他同意更新,下载代码并安装它。但随后系统会重新启动先前安装的应用程序版本,并再次进行更新过程。以下代码有什么问题?
在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();
}
});
不知道这是否是原因:我使用此代码不是用于生产版本,而是用于应用程序的内部测试版本。