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

Android中onActivityResult里intent与getIntent()的区别及问题排查

Android中onActivityResult的intent与getIntent()的区别及问题解决

一、核心概念区分

  • onActivityResult的intent参数:这是你编写的HijackImplicitIntentsActivity通过setResult()返回给发起startActivityForResult()的目标Activity的结果数据容器,对应你代码里的intent_result_flag12,仅用于传递返回的业务数据。
  • getIntent():在目标Activity中调用该方法,获取的是启动目标Activity自身的原始Intent——也就是目标Activity被首次打开时系统传递给它的Intent,和你返回的结果Intent是完全独立的两个对象。

二、你的问题根源

目标Activity的onActivityResult判断条件if (intent == null || getIntent() == null || !getIntent().getBooleanExtra("LOGIN", false))一直触发返回,原因有两点:

  1. 你错误地将LOGIN参数放到了返回给目标Activity的结果Intent中,但该条件检查的是目标Activity自身的启动Intent是否包含LOGIN=true的参数;
  2. 你设置的LOGIN值为false,即便参数位置正确,取反后也会让条件成立。

当前目标Activity的启动Intent(比如从桌面启动的默认Intent)根本没有LOGIN参数,所以getIntent().getBooleanExtra("LOGIN", false)会返回默认值false,取反后为true,直接触发return逻辑。

三、代码修正方案

要让条件不成立,你需要让目标Activity的getIntent()包含LOGIN=true的参数。结合目标Activity的逻辑,可通过以下方式实现:

方案:修改目标Activity的启动Intent

如果可以控制目标Activity的启动流程,直接在启动它时为Intent添加LOGIN参数:

// 在你的应用中启动目标Activity时添加参数
Intent launchTarget = new Intent("你的目标Activity包名.目标Activity类名");
launchTarget.putExtra("LOGIN", true);
startActivity(launchTarget);

补充:简化你的返回Intent代码

你当前的返回Intent设置逻辑可以简化,且token参数的设置是符合要求的:

Intent resultIntent = new Intent();
resultIntent.putExtra("token", 1094795585);
setResult(RESULT_OK, resultIntent);
finish();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:09:52