7

この Android の問題に対処する方法がわかりません。簡単に言えば、私の 2 つのアプリケーション間のフローは次のとおりです。

フロー

  1. アプリケーション Aをマーケット アプリケーション(AIDL)のサービスにバインドする
  2. BroadcastReceiver を登録し、 pendingIntent を返すサービス メソッドを呼び出します。
  3. PendingIntent を起動します(BillingActivity インスタンスを含みます)。
  4. 「 startActivityForResult() 」で PaymentActivityを開始します。
  5. いくつかのことを行い、終了します(finish() )。
  6. onActivitiyResult()メソッドで、ブロードキャストを送信して終了します。
  7. ブロードキャスト情報を取得します

2 つのアプリケーション間のフロー

問題 :

以下のコンポーネントでタスクを作成したい:

  • Top1Activity(アプリA)
  • BillingActivity (マーケット アプリケーション)
  • PaymentActivity (マーケット アプリケーション)

Android のフォアグラウンド タスクとバックグラウンド タスク

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 にリダイレクトされます ...

わかりませんか?ありがとうございました

4

1 に答える 1

2

BillingActivity PaymentActivity`に追加android:taskAffinity=""します。<activity> defninitions for bothand

于 2015-02-02T09:11:13.690 に答える