Statusbar Notification

Ответить
Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Statusbar Notification

Сообщение andev » 12 май 2012, 18:51

Использую в своем месенджере для оповещения о новом сообщении.
При нажатии вызываю активити со списком чатов, но создается новая копия активити и при нажатии на ней Back появляется предыдущая из стэка.
Можно ли как-то вызывать существующую вместо создания новой?

Код:

Код: Выделить всё

public void NotifyNow(String tickerText, String contentTitle, String contentText) {

	long when = System.currentTimeMillis();
	Notification notification = new Notification(R.drawable.ntf_icon, tickerText, when);
	
	Intent notificationIntent = new Intent(context, ActivityChats.class);
	PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
	notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

	notification.flags = Notification.FLAG_AUTO_CANCEL;

	int NotificationID = nit_ID; // int
	notificationManager.notify(NotificationID, notification);
}

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Statusbar Notification

Сообщение damager82 » 14 май 2012, 11:45

andev писал(а):Можно ли как-то вызывать существующую вместо создания новой?
К Intent можно цеплять флаги. Для Activity есть набор флагов: FLAG_ACTIVITY_*.
Я пока что с ними не возился подробно, но думаю копать надо туда. Плюс в манифесте тоже по этому поводу есть настройки.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

aleksdanr
Сообщения: 1
Зарегистрирован: 28 июн 2012, 14:35

Re: Statusbar Notification

Сообщение aleksdanr » 28 июн 2012, 14:40

Попробуйте вставить строчку

Код: Выделить всё

notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

DenBond7
Сообщения: 5
Зарегистрирован: 20 май 2012, 15:33

Re: Statusbar Notification

Сообщение DenBond7 » 14 авг 2012, 15:01

Привет.
Пробуй

Код: Выделить всё

final Intent intent = new Intent(context, FirstActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

DenBond7
Сообщения: 5
Зарегистрирован: 20 май 2012, 15:33

Re: Statusbar Notification

Сообщение DenBond7 » 14 авг 2012, 15:05

у меня тоже похожий вопрос


Есть приложени. При старте в статус бар отправляется Notification, при нажатии на который мы возвращаемся назад в приложение. Таких примеров много - Skype, ICQ...
То есть по сути нам нужен код, аналогичен ситуации , когда мы делаем длинный клик на HOME и потом выбираем наше приложение.
Ктото таким кодом поделится может?

У меня вариант есть, но он плохо работает. Он создает дубликаты

Код: Выделить всё

public static void startResumeNotification(Context context) {
int icon = R.drawable.ic_launcher;
CharSequence tickerText = "StatusBarNotification";
CharSequence contentTitle = "StatusBarNotification";
CharSequence contentText = "StatusBarNotification";

final NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

Intent notificationIntent = new Intent(context, FirstActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
Notification notification = new Notification(icon, tickerText, System.currentTimeMillis());
notification.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
notification.setLatestEventInfo(context, contentTitle, contentText, pendingIntent);

mNotificationManager.notify(RESUME_NOTIFICATION_ID, notification);
}



При этом дубликаты создаются только после обновления программы и установки, после нажатия кнопки открыть.
Вложения
StatusBarNotification.zip
(67.41 КБ) 233 скачивания

Ответить