我正在实施 android 的应用内更新。我面临的问题是当用户在应用程序更新期间杀死应用程序并重新打开它时。
需要做:
在应用程序重新打开时,我需要根据更新类型显示安装状态,但似乎无法区分正在进行的更新类型。
如果安装状态是InstallStatus.DOWNLOADED
并且更新类型是灵活的,我需要向用户显示一个 Snackbar,说明已通过安装操作下载更新。如果更新类型是即时并且更新正在进行中,我需要继续使用谷歌即时更新屏幕。
怎么了
我已将此代码添加到我的活动的 onStart 回调中。当更新类型 Flexible 正在进行(未下载)时,每次都在 else case 中,获取更新可用性UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS
。
public void checkIfUpdateInProgress() {
mAppUpdateManager.getAppUpdateInfo().addOnSuccessListener(appUpdateInfo -> {
mAppUpdateInfo = appUpdateInfo;
if (appUpdateInfo.installStatus() == InstallStatus.DOWNLOADED) {
showUpdateDownloadedSnackbar();
} else if (appUpdateInfo.updateAvailability()
== UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
requestImmediateUpdate();
}
});
}
public void requestImmediateUpdate() {
try {
mAppUpdateManager.startUpdateFlowForResult(
// Pass the intent that is returned by 'getAppUpdateInfo()'.
mAppUpdateInfo,
// Or 'AppUpdateType.FLEXIBLE' for flexible updates.
AppUpdateType.IMMEDIATE,
// The current activity making the update request.
MyJsActivity.this,
// Include a request code to later monitor this update request.
REQUEST_CODE_APP_UPDATE_IMMEDIATE);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}