You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Play商店Open Test环境下inApp Update柔性更新下载后未安装问题

问题根因

你当前采用AppUpdateType.FLEXIBLE弹性更新模式实现应用内更新,该模式原生逻辑仅支持后台静默下载更新包,不会自动触发安装流程。你提供的代码仅实现了更新检测与更新流程启动逻辑,缺失了下载完成状态监听、主动触发安装的逻辑,因此会出现下载完成后无安装提示的问题。

修复步骤
  • 第一步:在Activity中注册应用更新状态监听器,监听更新包下载完成事件
  • 第二步:收到下载完成通知后主动调用appUpdateManager.completeUpdate()触发安装流程
  • 第三步:在Activity销毁时注销监听器避免内存泄漏
完整修复代码示例
// 定义请求码常量
private static final int REQUEST_APP_UPDATE = 1001;
private AppUpdateManager appUpdateManager;
// 定义状态监听器
private InstallStateUpdatedListener installStateUpdatedListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    appUpdateManager = AppUpdateManagerFactory.create(this);
    // 初始化状态监听器
    installStateUpdatedListener = installState -> {
        if (installState.installStatus() == InstallStatus.DOWNLOADED) {
            // 下载完成,触发安装
            popupSnackbarForCompleteUpdate();
        }
    };
    // 注册监听器
    appUpdateManager.registerListener(installStateUpdatedListener);
    
    // 调用更新检测
    checkForUpdate();
}

private void popupSnackbarForCompleteUpdate() {
    Snackbar.make(
        findViewById(R.id.activity_main_layout),
        "新版本已下载完成,是否立即安装?",
        Snackbar.LENGTH_INDEFINITE
    ).setAction("安装", view -> {
        appUpdateManager.completeUpdate();
    }).show();
}

// 原有检测更新代码无需修改
private void checkForUpdate() {
    appUpdateManager
        .getAppUpdateInfo()
        .addOnSuccessListener(
            appUpdateInfo -> {
                if ((appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE)
                        && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE))
                {
                    try {
                        appUpdateManager.startUpdateFlowForResult(
                                appUpdateInfo,
                                AppUpdateType.FLEXIBLE,
                                this,
                                REQUEST_APP_UPDATE);
                    } catch (IntentSender.SendIntentException e) {
                        e.printStackTrace();
                    }
                }
            });
}

@Override
protected void onDestroy() {
    super.onDestroy();
    // 注销监听器避免内存泄漏
    if (appUpdateManager != null && installStateUpdatedListener != null) {
        appUpdateManager.unregisterListener(installStateUpdatedListener);
    }
}
测试注意事项
  • 测试设备登录的Google账号必须已加入当前应用的Open Test测试组
  • 设备本地安装的应用版本号必须低于Play商店Open Test渠道分发的最新版本号
  • 本地安装包的签名必须与Play商店上传的应用签名完全一致,否则会出现更新识别异常、安装失败问题
  • REQUEST_APP_UPDATE为自定义唯一整数请求码,不要和当前页面其他业务的请求码冲突

内容的提问来源于stack exchange,提问作者tomtript

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:45:06