【发布时间】:2021-01-18 17:30:11
【问题描述】:
我正在尝试使用 ATH Movil 付款。所以它需要打开 ATH Movil 应用程序并从它那里获得完成或取消的响应。启动 ATH Movil 应用程序并获得响应后,它每次都会创建一个新活动,而不是返回启动应用程序的同一个活动。
private static void execute(Context context, String json, long timeout) {
PackageInfo athmInfo;
int athmVersionCode = 0;
String athmBundleId = COM_EVERTEC_ATHMOVIL_ANDROID + buildType;
Intent intent = context.getPackageManager().getLaunchIntentForPackage(athmBundleId);
try {
athmInfo = context.getPackageManager().getPackageInfo(athmBundleId, 0);
athmVersionCode = athmInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) {
logForDebug(e.getMessage());
}
if (intent == null || athmVersionCode <= ConstantUtil.ATH_MOVIL_REQUIRED_VERSION_CODE) {
intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(ConstantUtil.ATH_MOVIL_MARKET_URL));
}
intent.putExtra((ConstantUtil.BUNDLE), context.getPackageName());
intent.putExtra(ConstantUtil.JSON_DATA_KEY, json);
intent.putExtra(ConstantUtil.PAYMENT_DURATION_TIME_KEY, timeout);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); context.startActivity(intent); }
这是清单文件:
<activity
android:name=".Activity1"
android:label=""
android:screenOrientation="portrait">
<intent-filter>
<action android:name="....ATHMSDK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Activity1 也实现了我正在调用的 Activity1 的 PaymentResponseListener 和 onResume
PaymentResponse.validatePaymentResponse(getIntent(), Activity1.this); // 这个函数来自他们的 sdk 并且是只读的。
现在,当 Activity1 启动 ATH Movil 应用程序并获得响应时。它再次创建创建 Activity1 而不是回到现有的。有人可以帮助我吗?我的代码有什么问题?
【问题讨论】: