私は2つ持っていNotifications
ます:1つは着信メッセージ用、もう1つは発信メッセージ用です。Notification
クリックすると、それは自分自身に送信しますPendingIntent
。Notifications
どれがクリックされたかを判断するために、追加の値を入力しました。
private static final int INID = 2;
private static final int OUTID = 1;
private void update(boolean incoming, String title, String message, int number) {
notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent = new Intent(this, Entry.class);
intent.putExtra((incoming ? "IN" : "OUT"), incoming);
PendingIntent pi = PendingIntent.getActivity(Entry.this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
Notification noti = new Notification(incoming ? R.drawable.next : R.drawable.prev, incoming ? "Incoming message" : "Outgoing message", System.currentTimeMillis());
noti.flags |= Notification.FLAG_NO_CLEAR;
noti.setLatestEventInfo(this, title, message, pi);
noti.number = number;
notificationManager.notify(incoming ? INID : OUTID, noti);
}
そしてIntent
、onNewIntent
メソッドでをキャプチャします。
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
if (intent.getExtras() != null)
for (String id : new ArrayList<String>(intent.getExtras().keySet())) {
Object v = intent.getExtras().get(id);
System.out.println(id + ": " + v);
}
else
log("onNewIntent has no EXTRAS");
}
さらに、 (タグmanifest
内の)タスクが1つだけであることを確認する行:activity
android:launchMode="singleTop"
メソッドを実行することをログに記録しましたonNewIntent
が、常に同じものを使用しintent
ます(つまり、INまたはOUTのいずれかをクリックするnotification
と、インテントエクストラには常に同じものが含まれますbundle
(ログ:) OUT: false
)。両方のインテントの初期化は、変更されたときとは別のシーケンスで行われるため、常に最後に作成されたインテントであることがわかりました。
private void buttonClick(View v) {
update(true, "IN", "in", 1);
update(false, "OUT", "out", 3);
}
private void setNotificationSettings() {
update(false, "IN", "===out message===", 0);
update(true, "OUT", "===in message===", 0);
}
なぜ私はいつも同じ(最後に作成された)を受け取るのIntent
ですか?