Android应用内立即更新可取消。

5

据我理解,Google即时应用更新不应该是可取消的,但对话框上有一个X图标可以取消更新过程。

enter image description here

是否有方法可以删除取消选项?

我正在使用最新的Play Core版本1.10.2。

谢谢

2个回答

3
起初,我也有同样的理解,但在查阅文档后,我没有找到这些信息。两种InApp更新类型都是可取消的,而防止用户在使用应用程序之前进行更新的唯一方法是,如果onActivityResult()返回与“OK”不同的内容,则完成应用程序。

灵活更新和即时更新之间的区别是:

在灵活更新中,如果用户决定更新,它可以在下载期间使用应用程序,并且当下载完成时,您需要显示某些UI来调用completeUpdate()。

在即时更新中,如果用户决定更新,它不能使用应用程序,因为将显示全屏进度对话框。下载完成后,Android将安装新版本,即使您的应用程序在后台运行。

InAppUpdate Doc


1
您可以处理取消按钮和返回按钮的点击事件。 如果用户单击取消或返回按钮,那么执行onActivityResult回调,如果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);
        }
    });

官方安卓文档在此输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接