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

InAppUpdates中startUpdateFlowForResult用什么替代已废弃的onActivityResult回调?

替代方案:使用官方 Activity Result API

Google 官方已推荐使用 Activity Result API 完全替代废弃的 onActivityResult 方法,适配 InAppUpdates 的具体实现步骤如下:

步骤1:提前注册更新流程结果回调启动器

需要在 Activity/Fragment 生命周期进入 STARTED 状态前完成启动器注册,通常放在 onCreate 方法中执行:

Kotlin 示例

private val updateFlowLauncher = registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { result ->
    when (result.resultCode) {
        RESULT_OK -> {
            // 用户确认更新,更新流程正常启动,可按需添加后续逻辑
        }
        RESULT_CANCELED -> {
            // 用户主动取消更新,可做降级提示、重新触发更新等处理
        }
        else -> {
            // 更新流程启动异常,可添加错误上报、兜底跳转应用商店等逻辑
        }
    }
}

Java 示例

private ActivityResultLauncher<IntentSenderRequest> updateFlowLauncher = registerForActivityResult(
    new ActivityResultContracts.StartIntentSenderForResult(),
    result -> {
        int resultCode = result.getResultCode();
        if (resultCode == Activity.RESULT_OK) {
            // 用户确认更新,更新流程正常启动
        } else if (resultCode == Activity.RESULT_CANCELED) {
            // 用户主动取消更新
        } else {
            // 更新流程启动异常
        }
    }
);

步骤2:启动更新时传入注册好的启动器

获取到 AppUpdateInfo 实例后,调用更新方法时直接传入上面注册的启动器,无需再传入自定义 requestCode:

Kotlin 示例

val updateOptions = AppUpdateOptions.newBuilder(AppUpdateType.IMMEDIATE) // 按需替换为 FLEXIBLE 灵活更新
    .build()
appUpdateManager.startUpdateFlow(
    appUpdateInfo,
    updateFlowLauncher,
    updateOptions
)

Java 示例

AppUpdateOptions updateOptions = AppUpdateOptions.newBuilder(AppUpdateType.IMMEDIATE)
    .build();
appUpdateManager.startUpdateFlow(appUpdateInfo, updateFlowLauncher, updateOptions);

注意事项

  • 启动器必须提前完成注册,禁止在点击事件等动态触发的逻辑中执行注册操作,否则会抛出生命周期异常
  • 原有 onActivityResult 中的结果判断逻辑可以直接复用,无需修改
  • 该方案同时兼容即时更新、灵活更新两种模式的启动回调处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:24:04