У меня есть две активности MainActivity и ReceivedMessageActivity. и фоновый сервис для получения из него контекста и передачи в SMSReceiver, который расширяет BroadcastReceiver для получения sms. и когда получено смс, SMSReceiver создает уведомление. Я хочу, чтобы, когда я щелкнул уведомление, если приложение не запущено, было открыто ReceivedMessageActivity, а когда приложение запущено и если ReceivedMessageActivity открыто, не создавайте новое действие намеренно и просто выдвигайте его на передний план ReceivedMessageActivity. Я установил для параметра launchMode в манифесте значение singleTop, для MainActivity работает, но для ReceivedMessageActivity не работает! Я установил флаг намерения уведомления на FLAG_ACTIVITY_BROUGHT_TO_FRONT|Intent.FLAG_ACTIVITY_SINGLE_TOP и FLAG_ACTIVITY_CLEAR_TOP, но это не работает. Я установил манифест launchMode для ReceivedMessageActivity в singleInstance, чтобы он работал, но когда я запускаю ReceivedMessageActivity вручную, анимация по умолчанию не работает (анимация справа налево). это мой код для уведомления:
public void addNotifiction(String title, String message) {
NotificationCompat.Builder builder = new
NotificationCompat.Builder(context);
builder.setContentTitle(title);
builder.setContentText(message);
builder.setStyle(new
NotificationCompat.BigTextStyle().bigText(message));
builder.setAutoCancel(true);
builder.setDefaults(Notification.DEFAULT_ALL);
builder.setSmallIcon(R.drawable.edit_icon);
builder.setCategory(NotificationCompat.CATEGORY_MESSAGE);
builder.setPriority(NotificationCompat.PRIORITY_MAX);
Intent notifactionIntent = new Intent(context,
ReceivedMessagesActivity.class);
notifactionIntent
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
TaskStackBuilder taskStackBuilder=TaskStackBuilder.create(context);
taskStackBuilder.addNextIntentWithParentStack(notifictionIntent);
PendingIntent contentPendingIntent= taskStackBuilder.getPendingIntent (0,PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentPendingIntent);
NotificationManager manager = (NotificationManager) context.getSystemService (Context.NOTIFICATION_SERVICE);
manager.notify(NOTIFICATION_ID++, builder.build());
}
и мой контекст - это контекст класса MyService:
Context context=MyService.context
EDIT: я обнаружил, что когда я использую android:parentActivityName=".MainActivity"
в манифесте для ReceiveMessageActivity, это происходит, и когда я нажимаю в уведомлении, а ReceiveMessageActivity открывается, мое приложение создает новое ReceiveMessageActivity, почему?
implcit intent
с ожидающим намерением, когда приложение находится в фоновом режиме! - person Santanu Sur   schedule 12.03.2018intent-filter
, данного активности PS idk, что такоеTaskStackBuilder
- person Santanu Sur   schedule 12.03.2018