私のアプリケーションでは、2つの主要なアクティビティがあります。
MainActivityとMessagesActivity
通知がクリックされ、アプリケーションが実行されていないときに、MainActivityを開始する必要があります。ただし、アプリケーションが実行されていて、MessagesActivityが表示されている場合、ユーザーが通知をクリックしたときに、何らかの方法でインテントデータを受信する必要があります。
通知は次のように作成します。
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Intent notificationIntent = new Intent(context, MainActivity.class);
notificationIntent.putExtra(MESSAGE_KEY, receivedMessage);
notificationIntent.putExtra(MESSAGE_ID_KEY, receivedMessageId);
int requestID = (int) System.currentTimeMillis();
PendingIntent contentIntent = PendingIntent.getActivity(context, requestID, notificationIntent, PendingIntent.FLAG_ONE_SHOT, intent.getExtras());
Notification notification = new Notification.Builder(context)
....build();
notificationManager.notify(requestID, notification);
他のフラグやlaunchModesなどを試してみました。これは、すべてが1つのアクティビティである場合は問題ありませんが、アプリケーションがMainActivityまたはMessagesActivityで実行されている場合はonNewIntentが呼び出されません。