Android: Уведомление запускает новое действие вместо возобновления старого, если первоначально действие не запускалось из средства запуска - PullRequest
4 голосов
/ 18 февраля 2012

Я потратил неделю на поиск решения, но безуспешно, поэтому мне нужна помощь.

Когда мое приложение переходит в фоновый режим, появляется уведомление и отображается статус активности.

Отлично работает, если приложение запускается из панели запуска (с action = android.intent.action.MAIN и category = android.intent.category.LAUNCHER). Но если приложение запущено, например из галереи, используя действие android.intent.action.SEND или android.intent.action.SEND_MULTIPLE и категорию android.intent.category.DEFAULT, уведомление начинает новое действие вместо возобновления существующего.

Код для уведомления:

String ns = Context.NOTIFICATION_SERVICE;
NotificationManager notificationManager = (NotificationManager) getSystemService(ns);

int icon = R.drawable.icon;
Notification notification = new Notification(icon, null, 0);
notification.flags |= Notification.FLAG_ONGOING_EVENT|Notification.FLAG_AUTO_CANCEL|Notification.FLAG_ONLY_ALERT_ONCE;

Context context = this.getApplicationContext();
CharSequence contentTitle = "XXX";
CharSequence contentText = "XXX";

Intent notificationIntent = new Intent(context, MyClass.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent activityIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, activityIntent);

notificationManager.notify(NOTIFICATION_ID, notification);

Другими словами, у меня есть приложение «Мое приложение» с активностью «Моя активность». Если «Моя активность» запускается в верхней части галереи и создает уведомление, то после нажатия на уведомление запускается «Моя заявка» вместо возобновления галереи с «Моей деятельностью».

Ты хоть представляешь, как его лечить?

1 Ответ

0 голосов
/ 27 августа 2014
    Intent myIntent = new Intent(this, MainActivity.class);
            myIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

            PendingIntent pendingIntent = PendingIntent.getActivity(
                    getBaseContext(), 0, myIntent,
                    PendingIntent.FLAG_CANCEL_CURRENT);


NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        notification.flags = notification.flags
                | Notification.FLAG_ONGOING_EVENT;
        notification.flags |= Notification.FLAG_NO_CLEAR;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...