【问题标题】:How do I come back to the same activity after launching a new app without creating a new activity启动新应用后如何在不创建新活动的情况下返回相同的活动
【发布时间】: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 而不是回到现有的。有人可以帮助我吗?我的代码有什么问题?

【问题讨论】:

    标签: java android


    【解决方案1】:

    将此添加到AndroidManifesto 中的Activity 标签:

    android:launchMode="singleTop"
    

    这假设您想要导航回启动 ATH Movil 的同一 Task,并且后堆栈上的最后一项确实是 Activity1。只要这些条件成立,Android 操作系统就会将您返回到 Activity1 的同一实例。

    关于这方面的更多信息,您也可以参考this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 2020-12-23
      • 2014-10-18
      • 2013-11-19
      • 1970-01-01
      • 2012-06-09
      相关资源
      最近更新 更多