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

使用androidx.activity.result启动第三方应用立即返回RESULT_CANCELED

问题根源

你遇到的即时返回RESULT_CANCELED的核心原因是getLaunchIntentForPackage()返回的Intent默认携带了FLAG_ACTIVITY_NEW_TASK标记:
当你使用带这个标记的Intent启动Activity时,目标Activity会运行在完全独立的新任务栈中,和调用方应用不属于同一个任务栈,系统默认不会给调用方回传任何结果,会在启动目标应用的同时立刻回调RESULT_CANCELED。

解决方法

1. 移除Intent中的NEW_TASK标记

修改你的getMyapplicationIntent()方法,拿到Intent后清除对应的标记:

private fun getMyapplicationIntent(): Intent? {
    val intent = packageManager.getLaunchIntentForPackage("com.example.myapplication")
    // 移除默认添加的NEW_TASK标记
    intent?.removeFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    return intent
}

2. 检查目标应用的配置

你还需要确认目标应用侧的配置符合返回结果的要求:

  • 目标入口Activity的launchMode必须为默认的standard,如果配置为singleTask/singleInstance/singleInstancePerTask这类单实例模式,依然会触发即时返回RESULT_CANCELED的问题
  • 目标Activity在关闭前必须显式调用setResult(Activity.RESULT_OK, 你要回传的Intent),再调用finish(),如果用户直接点击返回键关闭,系统默认会返回RESULT_CANCELED,属于正常逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:15:05