首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Android上的深度链接应用程序恢复到启动程序?

如何从Android上的深度链接应用程序恢复到启动程序?
EN

Stack Overflow用户
提问于 2019-11-29 03:10:52
回答 1查看 564关注 0票数 1

因此,我有两个应用程序,如下所述:

商业应用程序

  1. 用户选择他们想要的项目。
  2. 用户单击结帐按钮。这将通过深度链接打开支付应用程序。

支付应用程序

  1. 支付应用程序获取由Merchant传递的信息并显示出来。
  2. 用户点击确认,用户将被要求刷他们的信用卡完成付款。
  3. 一旦付款完成,支付应用程序应将支付状态发送回Merchant,从而关闭自己。

问题

如何在支付应用程序的内部深入(很少活动)之后,从支付应用程序恢复到Merchant?因为现在,每次我试着完成这个活动,它就会进入支付应用程序的主要活动。

对问题的阐释

->支付应用程序(确认活动) ->支付应用程序(支付活动) ->支付应用程序(主要活动)

演示了我正在努力实现的

商业应用(结帐活动) ->支付应用(确认活动) ->支付应用(支付活动) ->商业应用(结帐活动) ->商业应用(状态活动)

商家应用程序-结帐活动

代码语言:javascript
复制
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();
    }
}

支付应用程序-支付活动

代码语言:javascript
复制
Intent intent = new Intent();
intent.putExtra("MESSAGE", "test");
setResult(2, intent);
finish();

请告诉我我在哪里出了差错?还是做这样的事情不是一个好的做法?

提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-29 04:14:45

我的第一个想法是:

  • 使用支付应用程序中的临时活动调用Payment Confirm Activity来清除支付应用程序之前的所有活动,并启动一个指向Merchant的深度链接
  • 您应该使用另一个Checkout Activity来处理来自Payment App的结果,比方说它是Checkout Confirm Activity

因此流量将是:

->支付应用程序(确认活动) ->支付应用程序(支付活动) -> 支付应用程序(支付确认活动) -> 商户应用程序(结帐确认活动) ->商业应用程序(状态活动)

步骤:

1/ PaymentActivity将启动PaymentConfirmActivity以清除前面使用以下代码进行的所有活动:

代码语言:javascript
复制
Intent intent = new Intent(getApplicationContext(), PaymentConfirmActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

2/ PaymentConfirmActivity通常是空白的,它启动一个指向Merchant的深度链接,通知结果,包括所有输入数据

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

编辑:你可以重用商业应用程序CheckoutActivity (不需要CheckoutConfirmActivity),通过应用singleTop启动模式。找到了一篇博文这里。如果CheckoutActivity仍然是onNewIntent中最顶层的活动,那么它可以在MerchantApp中接收结果

4/像往常一样移动到StatusActivity

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59098317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档