因此,我有两个应用程序,如下所述:
商业应用程序
支付应用程序
问题
如何在支付应用程序的内部深入(很少活动)之后,从支付应用程序恢复到Merchant?因为现在,每次我试着完成这个活动,它就会进入支付应用程序的主要活动。
对问题的阐释
->支付应用程序(确认活动) ->支付应用程序(支付活动) ->支付应用程序(主要活动)
演示了我正在努力实现的
商业应用(结帐活动) ->支付应用(确认活动) ->支付应用(支付活动) ->商业应用(结帐活动) ->商业应用(状态活动)
码
商家应用程序-结帐活动
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();请告诉我我在哪里出了差错?还是做这样的事情不是一个好的做法?
提前谢谢你
发布于 2019-11-29 04:14:45
我的第一个想法是:
Payment Confirm Activity来清除支付应用程序之前的所有活动,并启动一个指向Merchant的深度链接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的深度链接,通知结果,包括所有输入数据
3/此CheckoutConfirmActivity将通过上面的深度链接(以AndroidManifest配置的格式)处理来自Payment App的结果。获取输入,获取结果并显示确认页面
编辑:你可以重用商业应用程序CheckoutActivity (不需要CheckoutConfirmActivity),通过应用singleTop启动模式。找到了一篇博文这里。如果CheckoutActivity仍然是onNewIntent中最顶层的活动,那么它可以在MerchantApp中接收结果
4/像往常一样移动到StatusActivity
https://stackoverflow.com/questions/59098317
复制相似问题