この Android の問題に対処する方法がわかりません。簡単に言えば、私の 2 つのアプリケーション間のフローは次のとおりです。
フロー
- アプリケーション Aをマーケット アプリケーション(AIDL)のサービスにバインドする
- BroadcastReceiver を登録し、 pendingIntent を返すサービス メソッドを呼び出します。
- PendingIntent を起動します(BillingActivity インスタンスを含みます)。
- 「 startActivityForResult() 」で PaymentActivityを開始します。
- いくつかのことを行い、終了します(finish() )。
- onActivitiyResult()メソッドで、ブロードキャストを送信して終了します。
- ブロードキャスト情報を取得します。
問題 :
以下のコンポーネントでタスクを作成したい:
- Top1Activity(アプリA)
- BillingActivity (マーケット アプリケーション)
- PaymentActivity (マーケット アプリケーション)
BillingActivity + PaymentActivity "launchMode"を変更しようとしました:
単一インスタンス
両方に新しいタスクが作成されます。戻るボタンを押す (または finish() メソッドを呼び出す) と、ユーザーは予想どおり前のアクティビティにリダイレクトされます。問題: 「StartActivityForResult」は複数のタスク間で使用できません(onActivityResult はすぐに呼び出されます)。
シングルタスク
BillingActivity で戻るボタンを押す (または finish() メソッドを呼び出す) と、ユーザーは(バックグラウンド タスクにあった) Top2Activity にリダイレクトされます。
私はそれを解決しようとして 48 時間以上を失いました。よろしくお願いします。必要に応じてコードを投稿できます。
ありがとうございました
----------- 編集 2015-02-02
David のアドバイスに従って、すべての特別な起動モードを削除しました。
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>
私の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>
pendingIntent を返す AIDL サービス:
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 にリダイレクトされます ...
わかりませんか?ありがとうございました