Мое приложение многократно загружает данные с сервера. Среди этих данных есть сообщения.
Всякий раз, когда загружаются новые сообщения, MainActivity вызывается для метода обратного вызова интерфейса onMessagesReceived (int numOfMessages) .
Приложение имеет только одну активность, и каждый экран реализован как фрагмент. Переключение фрагментов управляется выделенным классом Navigator .
Моя проблема заключается в том, что пользователь нажимает на Уведомление. Когда пользователь нажимает на уведомление, список сообщений должен быть показан.
public class MainActivity extends AppCompatActivity implements MessageListener {
private static final int MESSAGE_NOTIFICATION_ID = 101010;
private static final String EXTRA_SHOW_MESSAGES = "SHOW_MESSAGES";
private Navigator mNavigator;
@Override
onMessagesReceived(int numOfMessages) {
Intent intent = new Intent(this, MainActivity.class);
testIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
testIntent.putExtra(EXTRA_SHOW_MESSAGES, true);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "testChannel")
.setSmallIcon(R.drawable.ic_message_notification)
.setContentTitle("New messages!")
.setContentText("You got " + numOfMessages + " new messages")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(MESSAGE_NOTIFICATION_ID, builder.build());
}
@Override
protected void onResume() {
super.onResume();
Bundle extras = getIntent().getExtras();
if (extras != null && extras.containsKey(EXTRA_SHOW_MESSAGES)) {
if (extras.getBoolean(EXTRA_SHOW_MESSAGES)) {
mNavigator.openMessageList();
}
}
}
}
В данный момент отображается MainActivity, когда приложение находится в фоновом режиме, но в onResume Bundle возвращается как null .
Когда приложение находится на переднем плане, ничего не происходит вообще.
Я хочу добиться щелчком на Уведомление:
- Когда пользователь находится внутри приложения, фрагмент MessageList должен быть открыт
- Когда пользователь не находится внутри приложения, его следует запустить перед открытием фрагмента MessageList
Может кто-нибудь дать мне подсказку, как действовать отсюда? Может быть, использование Intents не является правильным решением здесь?