Android ガイドラインに準拠するバック スタックを構築するアクティビティ (C) を起動する通知があります。バック スタック:
C
B
A
ユーザーが通知をクリックすると、C が開き、押し戻すと B、A、ホーム画面の順に移動します。これは期待どおりに機能します。
ユーザーが通知をクリックし(Cを開く)、ホームボタンを押してホーム画面に移動し、ホーム画面からアプリを起動すると、期待どおりにCではなくAが開きます。その後、(A から) 押し戻すと、C、B、A の順に進みます。したがって、この状況でホーム画面からアプリを起動すると、新しいアクティビティ A が作成され、既存のスタックの上に配置されます。既存のスタック (C) の上部を開く代わりに、スタックは次のようになります。
A
C
B
A
通知のバック スタックと起動インテントを作成するコード:
/* Build the back stack for navigation */
TaskStackBuilder stackBuilder = TaskStackBuilder.create( this );
/* Pairing List */
Intent intent = new Intent( this, A.class );
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP );
stackBuilder.addNextIntent( intent );
/* Pairing */
intent = new Intent( this, B.class );
intent.putExtra( "id", briefing.getLeg().getDay().getPairing().getId() );
stackBuilder.addNextIntent( intent );
/* Create a launch intent and notification */
intent = new Intent( this, C.class );
intent.putExtra( "date", briefing.getLeg().getDay().getDate() );
intent.putExtra( "id", briefing.getLeg().getId() );
intent.putExtra( "briefing", true );
stackBuilder.addNextIntent( intent );
pIntent = stackBuilder.getPendingIntent( 0, PendingIntent.FLAG_ONE_SHOT );
私のマニフェストでのアクティビティ宣言:
<activity android:name=".C" />
<activity
android:name=".A"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".B" />
インテントに設定しているフラグに問題があると思いますが、何を変更する必要があるのか わかりません。何か案は?