Android: создание одной задачи с несколькими действиями приложений (проблема Lauchmode)

Я не знаю, как решить эту проблему с Android. В двух словах, поток между моими 2 приложениями выглядит следующим образом:

поток

  1. Привязать приложение A к услуге в приложении Market (AIDL)
  2. Зарегистрируйте BroadcastReceiver и вызовите метод службы, который возвращает pendingIntent.
  3. Запустите PendingIntent (содержит экземпляр BillingActivity).
  4. Запустите PaymentActivity с помощью "startActivityForResult ()".
  5. Делать некоторые вещи, прекратить (конец ()).
  6. в методе onActivitiyResult () отправьте широковещательную рассылку и завершите работу.
  7. Получите информацию о трансляции.

Поток между моими 2 приложениями

Выпуск:

Я хочу создать задачу с помощью следующих компонентов:

  • Top1Activity (приложение A)
  • BillingActivity (рыночное приложение)
  • PaymentActivity (рыночное приложение)

передние и фоновые задачи для Android

Я пытался изменить BillingActivity + PaymentActivity "launchMode":

SingleInstance

Новая задача создана для них обоих. При нажатии кнопки возврата (или при вызове метода finish()) пользователь перенаправляется, как и ожидалось, к предыдущему действию. Проблема: "StartActivityForResult" нельзя использовать между несколькими задачами (onActivityResult вызывается немедленно).

SingleTask

При нажатии кнопки возврата (или вызова метода finish()) в BillingActivity пользователь перенаправляется на Top2Activity (которая была в фоновой задаче).

Я потерял более 48 часов, пытаясь решить эту проблему. Буду признателен за вашу помощь. Я могу опубликовать код, если это необходимо.

Спасибо

----------- РЕДАКТИРОВАТЬ 2015-02-02

Следуя совету Дэвида, я удалил все специальные режимы запуска:

TOP2Activity (фон):

<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>

My 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>

PaymentActivity:

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

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

Служба AIDL, возвращающая 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...

Без понятия? Спасибо

1 ответ

Решение

Добавлять android:taskAffinity="" к <activity> defninitions for bothBillingActivityandPaymentActivity`.

Другие вопросы по тегам