Google Immediate app update, as far as I understand, shouldn't be cancelable, but the dialog as an X icon that cancels the update process.
Is there a way to remove the cancel option?
I'm using the latest play core version, 1.10.2
Thanks
Google Immediate app update, as far as I understand, shouldn't be cancelable, but the dialog as an X icon that cancels the update process.
Is there a way to remove the cancel option?
I'm using the latest play core version, 1.10.2
Thanks
At the beginning, I had the same understanding, but looking up in documentation, I wasn't able to find this information. Both InApp update types are cancelable, and the only way to prevent the user to update before uses your app will be finish the app if onActivityResult() returns something diffrent than OK
The difference between Flexible and Immediate update is:
In Flexible update, if the user decide to update, it can uses the app during the download and when the download is finished, you need show some U.I to call the completeUpdate().
In Immediate update, if the user decide to update, it can't use uses the app, because a fullscreen progress dialog will be show. After the download is completed, the Android will install the new version even if your app is in background.
You can handle the cancel button and back button click listener. If the user clicks cancel or back button then
onActivityResult
callback is executed and you can reopen the app update screen if
resultcode == RESULT_CANCELED
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == APP_UPDATE_REQ_CODE) {
if (resultCode == RESULT_CANCELED) {
// App update is canceled by the user so re-open the in-app update screen.
// This block of code is executed if user clicks cancel button from the in-app update screen or press the hardware back button.
checkForAppUpdate();
} else if (resultCode == RESULT_OK) {
// App successfully updated to the latest version.
finish();
} else {
// Update fails then re-open the in-app update screen.
checkForAppUpdate();
}
}
}
private void checkForAppUpdate(){
if (this instanceof SplashActivity){
return;
}
if (appUpdateManager == null){
appUpdateManager = AppUpdateManagerFactory.create(this);
}
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
&& appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
startUpdateFlow(appUpdateInfo);
}
});