2

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

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 正在调用和获取数据。但是,我的场景是客户端应用程序的多链链接活动。

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

4

2 回答 2

1

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

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

于 2016-08-03T07:14:35.480 回答
-1

ThirdActivity您可以从to导航FirstActivity,然后以您onNewIntentFirstActivity.

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

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();
}
于 2016-08-03T12:39:39.147 回答