Android:创建具有多个应用程序活动的单个任务(Lauchmode 问题)

Android : Create a single task with multiple applications' activities (Lauchmode issue)

我不知道如何解决这个 Android 问题。简而言之,我的 2 个应用程序之间的流程如下:

流量

  1. 应用程序 A 绑定到 市场应用程序 (AIDL)
  2. 中的服务
  3. 注册 BroadcastReceiver 并调用 return 一个 pendingIntent.
  4. 的服务方法
  5. 启动 PendingIntent(包含 BillingActivity 实例)。
  6. 使用“startActivityForResult()”启动 PaymentActivity。
  7. 做一些事情,终止 (finish() )。
  8. onActivitiyResult()方法中,发送广播并终止。
  9. 获取广播信息.

问题:

我想用以下组件创建一个任务

我尝试更改 BillingActivity + PaymentActivity "launchMode" :

singleInstance

为他们创建了一个新任务。当按下 return 按钮(或调用 finish() 方法)时,用户将按预期重定向到上一个 activity。问题:"StartActivityForResult"不能在多个任务之间使用(立即调用onActivityResult)。

SingleTask

在 BillingActivity 中按下 return 按钮(或调用 finish() 方法)时,用户被重定向到 Top2Activity(在后台任务中)。

我花了超过 48 个小时来解决它。我将不胜感激你的帮助。 如果需要,我可以 post 编码。

谢谢

------------ 编辑 2015-02-02

按照 David 的建议,我删除了所有特殊启动模式:

TOP2活动(背景):

<activity
    android:name=".activities.MainActivity"
    android:configChanges="orientation|keyboardHidden"
    android:label="@string/title_activity_main"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="stateAlwaysHidden|adjustPan" >
    <meta-data
        android:name="android.app.searchable"
        android:resource="@xml/searchable" />

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data android:scheme="xxx" />
        <data android:host="xxx" />
    </intent-filter>
</activity>

我的 Top1Activity(前景):

<activity
    android:name="activities.MainActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

BillingActivity(前景):

<activity
    android:name=".activities.BillingActivity"
    android:configChanges="orientation|keyboardHidden"
    android:excludeFromRecents="true"
    android:label="@string/title_activity_billing"

    android:screenOrientation="portrait" >
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
    </intent-filter>
</activity>

支付活动:

<activity
    android:name=".activities.PaymentActivity"
    android:configChanges="orientation|keyboardHidden"
    android:label="@string/title_activity_payment"
    android:screenOrientation="portrait"

    android:windowSoftInputMode="stateHidden" >
</activity>

AIDL 服务 returning pendingIntent:

Intent intent = new Intent();
intent.setClass(InBillingService.this, jp.xxx.activities.BillingActivity.class);
intent.putExtra(Consts.PENDING_INTENT_INFO, result);
intent.putExtra(Consts.RESULT_KEY, nextSession);


PendingIntent pendingIntent;                    
pendingIntent = PendingIntent.getActivity(InBillingService.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

bundle.putParcelable(Consts.PENDING_INTENT, pendingIntent);

当从 BillingActivity(或 PaymentActivity)按下后退按钮时,我仍然被重定向到 Top2Activity...

不知道? 谢谢

android:taskAffinity="" 添加到 <activity> defninitions for bothBillingActivityandPaymentActivity`。