私は愚かな問題で数時間立ち往生しています。
私のアプリケーションは、A(マスター)とBの2つのアクティビティで構成されています。サービスSも1つあります。「通常の」タスクスタックはABで、Sはバックグラウンドで実行されています。
私の問題は、通知を使用してアクティビティBに直接到達したいときに表示されます。戻るボタンのデフォルトの動作を維持するために、ABを取得するためにタスクスタックを構築する必要があります。(ユーザーがAに戻ることができるようにしたい)。
API 7を使用しているため、Androidデベロッパーチュートリアルhttp://developer.android.com/guide/topics/ui/notifiers/notifications.htmlに示されているようにインテント配列を使用できません。そこで、アクティビティAのonCreate()でこのケースを区別するために、通知によって送信されるインテントにカスタムアクション(S.ACTION_CUSTOM)を追加することにしました。
サービスSで宣言された通知に関連付けられたインテント:
Intent notificationIntent = new Intent(this, A.class);
notificationIntent.setAction(ACTION_CUSTOM);
Aで、onCreate()メソッドの最後に次を追加します。
if (S.ACTION_CUSTOM.equals(getIntent().getAction())) {
Intent intent = new Intent(this, B.class);
intent.setAction(S.ACTION_CUSTOM);
startActivity(intent);
}
このコードは、通知からBに直接移動するように機能し、Aへの戻りを承認します。ただし、通知「ショートカット」を使用すると、ホームメニューからでも、アプリケーションの起動時にBに直接到達します。何が起こるかを理解するために多くのことを試みましたが、Aのifステートメントの最後にgetIntent()。setAction(ANYTHING)を追加しても、動作は同じです。
誰かが私のコードで何が起こっているのか教えてもらえますか?モーバー私は自分の願いをかなえるために他の方法で心を開いています。
ありがとう。
編集:
XMLマニフェストの一部:
<activity
android:name=".A"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".B"
android:label="@string/app_name" >
</activity>
しかし、インテントフィルターは私の問題とは何の関係もないと思います。