所以我有两个如下所述的应用程序:
Merchant App
Payment App
问题
[深入到付款应用程序中(其中很少活动)后,如何从付款应用程序恢复到商户应用程序?因为此刻,每次我尝试完成该活动时,它将转到付款应用程序的主活动。
问题说明
商家应用程式(结帐活动)->付款应用程式(确认活动)->支付应用程序(支付活动)->支付应用程序(主要活动)
我要达到的目标的插图
商家应用程式(结帐活动)->付款应用程式(确认活动)->付款应用程序(付款活动)->商家应用程序(结帐活动)->商家应用(状态活动)
代码
商家应用-结帐活动
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();
[请提供我在哪里犯错的建议?还是做这样的事情不是一个好习惯?
提前谢谢您
使用付款应用程序中的临时活动调用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 AppCheckoutActivity
singleTop
)。找到了博客文章here。如果CheckoutActivity
仍然是MerchantApp中最重要的活动,则可以在onNewIntent
中接收结果]4 /像往常一样移至StatusActivity