如何从Android上的深层链接应用恢复到启动器应用?

问题描述 投票:0回答:1

所以我有两个如下所述的应用程序:

Merchant App

  1. 用户选择所需的项目。
  2. 用户单击结帐按钮。这将通过深层链接打开付款应用]

Payment App

  1. 付款应用获取由商家应用传递的信息并显示。
  2. 用户单击确认,将要求用户刷卡完成付款。
  3. 付款完成后,付款应用程序应将付款状态发送回给商户应用程序,从而自行关闭。

问题

[深入到付款应用程序中(其中很少活动)后,如何从付款应用程序恢复到商户应用程序?因为此刻,每次我尝试完成该活动时,它将转到付款应用程序的主活动。

问题说明

商家应用程式(结帐活动)->付款应用程式(确认活动)->支付应用程序(支付活动)->支付应用程序(主要活动)

我要达到的目标的插图

商家应用程式(结帐活动)->付款应用程式(确认活动)->付款应用程序(付款活动)->商家应用程序(结帐活动)->商家应用(状态活动)

代码

商家应用-结帐活动

Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);

//Verify if receiver app XXX this screen path
PackageManager packageManager = this.context.getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
boolean isIntentSafe = activities.size() > 0;
if (isIntentSafe) {
     ((Activity) context).startActivityForResult(intent, 2);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 2) {
        String message = data.getStringExtra("MESSAGE");
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }
}

支付应用-支付活动

Intent intent = new Intent();
intent.putExtra("MESSAGE", "test");
setResult(2, intent);
finish();

[请提供我在哪里犯错的建议?还是做这样的事情不是一个好习惯?

提前谢谢您

android deep-linking
1个回答
0
投票

使用付款应用程序中的临时活动调用Payment Confirm Activity清除付款应用程序的所有先前活动并启动与商家应用程序的深层链接

    您应该使用另一个Checkout Activity来处理Payment App的结果,假设它是Checkout Confirm Activity
  • 所以流程将是:
  • 商家应用程式(结帐活动)->付款应用程式(确认活动)->付款应用程序(付款活动)->

    付款应用程序(付款确认活动)->

    商家应用程序(结帐确认活动)->商家应用(状态活动)

    步骤:1 / PaymentActivity将启动PaymentConfirmActivity,以使用此代码清除以前的所有活动:

    Intent intent = new Intent(getApplicationContext(), PaymentConfirmActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);

    2 / PaymentConfirmActivity通常为空白,它将启动到Merchant App的深层链接以通知结果,包括所有输入数据

    3 /此CheckoutConfirmActivity将通过上方的深层链接处理Payment App中的结果(在AndroidManifest中配置的格式)。获取输入,获取结果并显示确认页面

    编辑:您可以通过应用CheckoutConfirmActivity启动模式来重用Merchant App

    CheckoutActivity

    (不需要singleTop)。找到了博客文章here。如果CheckoutActivity仍然是MerchantApp中最重要的活动,则可以在onNewIntent中接收结果]

    4 /像往常一样移至StatusActivity

  • © www.soinside.com 2019 - 2024. All rights reserved.