Android: создание одной задачи с несколькими действиями приложений (проблема Lauchmode)
Я не знаю, как решить эту проблему с Android. В двух словах, поток между моими 2 приложениями выглядит следующим образом:
поток
- Привязать приложение A к услуге в приложении Market (AIDL)
- Зарегистрируйте BroadcastReceiver и вызовите метод службы, который возвращает pendingIntent.
- Запустите PendingIntent (содержит экземпляр BillingActivity).
- Запустите PaymentActivity с помощью "startActivityForResult ()".
- Делать некоторые вещи, прекратить (конец ()).
- в методе onActivitiyResult () отправьте широковещательную рассылку и завершите работу.
- Получите информацию о трансляции.
Выпуск:
Я хочу создать задачу с помощью следующих компонентов:
- Top1Activity (приложение A)
- BillingActivity (рыночное приложение)
- PaymentActivity (рыночное приложение)
Я пытался изменить 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 both
BillingActivityand
PaymentActivity`.