【问题标题】:How to get data onActivityResult from external App Activity using seResult or startActivityForResult如何使用 seResult 或 startActivityForResult 从外部 App Activity 获取 onActivityResult 数据
【发布时间】:2016-12-08 16:59:05
【问题描述】:

我分别有两个应用程序。客户端和卖方应用程序。我想为客户端应用程序付款并获得对卖方应用程序的响应。 无论如何,我在卖家应用程序中启用了深度链接概念。 客户端应用程序: 它在客户端应用程序中有三个活动页面。获取详细信息(第一个活动页面)并显示确认(第二个活动),付款是第三个活动。 注意:使用卖家应用打开客户端应用,从客户端应用填写所有详细信息和付款,并将响应发送到卖家应用。 对于这个客户端,我为此设置了代码:

Intent object = new Intent();
object.putExtra("data", "3434434343343");
setResult(Activity.RESULT_OK, object);
finish();

对于卖家应用代码:

protected void onActivityResult(int ResCode, int ReqRes, Intent data) {

super.onActivityResult(ResCode, ReqRes, data);

if (ResCode == 1 && ReqRes == Activity.RESULT_OK && data != null) {

String response = data.getStringExtra("data");

}
}

这里的问题:从客户端使用 setResult 成功传递数据。然后,卖家应用程序活动也成功调用 onActivityResult,但是,意图数据仅作为 NULL 出现。因为,这里客户端使用多个活动,仅使用 then ,正在传递结果。那是我的问题。 如果无论如何可以从多个链接活动(外部应用程序活动)中获取 onActivityResult,它对我很有用。

注意:我找到了一种解决方案,如果两个应用程序具有单个活动意味着,它的正确设置结果和 OnactivityResult 正在调用和获取数据。但是,我的场景是客户端应用程序的多链链接活动。

请任何帮助来解决这个问题。 谢谢提前

【问题讨论】:

  • 蹩脚的问题:您是否尝试随后在链接活动中读取onActivityResult() 中的数据,然后将其设置为setResult()
  • 我想将第三个活动的响应返回给卖家应用程序,无论如何,我只为第三个活动设置了 setResult。在这里,我不想从客户端应用程序中的链活动中传递数据。我只想将响应数据发送到卖家应用 onActivityResult。
  • 所以,如果我做对了,请告诉我。卖家应用程序之后是客户端应用程序,用户导航到第三个活动,在那里她生成要发送到卖家应用程序的数据(可能通过setResult()
  • 是的。你在正确的道路上..这是我的场景。
  • 感谢您的回复sugar..我们设置setResult的最后一个活动是正确的。但是,我想将响应发送给卖家应用,而不是第一个活动..

标签: android android-intent onactivityresult startactivityforresult


【解决方案1】:

根据您上面的用例场景,我相信如果客户端应用程序使用基于Fragment 的设置,则允许这种通信的更好架构。在这里,您可以从卖家应用程序启动客户端活动,让用户导航到那里的不同片段,然后在合适的地方使用setResult()。由于这是一对一的活动结果设置行为,它应该可以工作。

您可以尝试的另一个建议是在客户端应用程序中,因为您不想使用片段方式,当用户前往不同的活动时,您可以立即在其中调用finish(),然后在最后的活动调用中调用setResult()。这可能行不通,但是,我的一小部分人说它可能:)。

【讨论】:

  • 感谢您的回复。对于第一个建议,我想将我的整体应用程序活动代码更改为片段代码。它对我来说是很大的变化..但是,我会想最后的方式。
  • 第二个,我已经尝试过了,在第三个活动中,我设置了 setResult()。当返回卖家应用程序时,它成功调用 onActivityResult(),但是,Intent 数据正在变为 null 即将到来..这个方法没有成功..
【解决方案2】:

您可以从ThirdActivity 导航到FirstActivity,然后在FirstActivityonNewIntent 方法中返回到您的卖家应用程序。

完成所有三个过程后,您的客户端应用程序应具有以下堆栈。

FirstActivity -> SecondActivity -> ThirdActivity

而您的ThirdActivity 位于堆栈顶部。您的ThirdActivity 可以使用以下代码导航到FirstActivity

Intent toFirstIntent = new Intent(this, FirstActivity.class);
toFirstIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
toFirstIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(toFirstIntent);
finish();

然后在您的FirstActivity,您可以设置数据并返回您的卖家应用程序。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    Intent data = new Intent();
    data.putExtra("data", "12345678");
    setResult(RESULT_OK, data);
    finish();
}

【讨论】:

    猜你喜欢
    • 2017-08-19
    • 2012-08-27
    • 2019-08-23
    • 2014-03-13
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    相关资源
    最近更新 更多