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

华为IAP中startResolutionForResult适配及onActivityResult替代方案咨询

替换废弃的onActivityResult实现华为IAP支付结果处理

Android官方已废弃onActivityResult,推荐使用Activity Result API处理页面跳转后的结果回调,以下是适配华为IAP支付的具体改造步骤:

1. 定义ActivityResultLauncher

在你的Activity或Fragment中,注册专门用于接收支付结果的ActivityResultLauncher,把原来onActivityResult里的逻辑移到回调中:

private val buyLauncher = registerForActivityResult(StartIntentSenderForResult()) { result ->
    val data = result.data
    val resultCode = result.resultCode
    
    if (resultCode == Activity.RESULT_OK && data != null) {
        // 解析华为IAP支付结果,替换成你原来的业务处理逻辑
        runCatching {
            val payResult = IapApiFactory.createApi().parsePayResultFromIntent(data)
            when (payResult.returnCode) {
                OrderStatusCode.ORDER_STATE_SUCCESS -> {
                    // 支付成功,执行后续业务
                }
                OrderStatusCode.ORDER_STATE_CANCEL -> {
                    // 用户取消支付
                }
                else -> {
                    Log.e(TAG, "支付失败,错误码: ${payResult.returnCode}")
                }
            }
        }.onFailure {
            Log.e(TAG, "解析支付结果失败", it)
        }
    } else {
        Log.e(TAG, "支付结果异常,resultCode: $resultCode")
    }
}

2. 替换startResolutionForResult调用

把原来启动支付跳转的代码,从status.startResolutionForResult(activity, REQ_CODE_BUY)替换为使用上述launcher启动:

if (status.hasResolution()) {
    try {
        val intentSender = status.resolution.intentSender
        buyLauncher.launch(IntentSenderRequest.Builder(intentSender).build())
    } catch (exp: SendIntentException) {
        Log.e(TAG, exp.message!!)
    }
} else {
    Log.e(TAG, "intent is null")
}

3. 删除废弃的onActivityResult方法

原来的onActivityResult方法可以直接删除,所有支付结果逻辑已迁移到buyLauncher的回调中。

注意事项

  • registerForActivityResult必须在Activity/Fragment的onCreate阶段或之前调用,不能在生命周期后期(如onStart之后)注册,否则会触发异常。
  • 每个ActivityResultLauncher对应单一请求场景,无需再用请求码区分,逻辑更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:40:28