38

Mam aktywność, która jest otwierana z paska powiadomień, ale kiedy robię NotificationManager.notify(...), nadaję intencjom inny pakiet, tak aby każde powiadomienie otwierało tę samą aktywność, ale uzyskiwanie z DB inne informacje.Wiele powiadomień o tej samej aktywności

Ale kiedy próbuję wejść do któregokolwiek z powiadomień (na przykład są 3 powiadomienia), wszyscy wysyłają mnie do działalności z tym samym pakietem, który ostatni. Po wypróbowaniu niektórych flag, naprawdę nie wiem, gdzie jest problem (niektóre flagi powodują, że powiadomienie wchodzi do działania z pierwszym pakietem).

Podążam drogą, którą użyli w the tutorial.

+0

Czy możesz podzielić się kodem gdzie tworzysz Oczekujące intencjami? Miałem podobny problem i to dlatego, że były oczekujące zamiary zostały ponownie wykorzystane przez ramy. – Maximus

Odpowiedz

104

Jeśli PendingIntent ma tę samą operację, działanie, dane, kategorie, komponenty i flagi, zostanie zastąpiony.

W zależności od sytuacji zazwyczaj rozwiązuję ten problem, podając unikalny kod żądania jako wartości statyczne (0,1,2) lub identyfikator wiersza danych, które otrzymuję z bazy danych.

PendingIntent.getActivity(context, MY_UNIQUE_VALUE , notificationIntent, PendingIntent.FLAG_ONE_SHOT); 

Potem korzystać z tego samego unikalną wartość dla notify() jako

mNotificationManager.notify(MY_UNIQUE_VALUE, notification); 
+0

To zrobiło to dla mnie. Wielkie dzięki. Dokumenty dla programistów wymieniają tylko unikalny identyfikator dla metody powiadamiania, a nie dla metody getActivity. – hcpl

+7

Miałem ten sam problem i te rozwiązania działają idealnie. Myślę, że problem zaczyna się od [dokumentacji] (http://developer.android.com/reference/android/app/PendingIntent.html#getActivity%28android.content.Context,%20int,%20android.content.Intent,% 20int% 29) - która twierdzi, że kod żądania nie jest obecnie używany, ale wygląda na to, że jest. Dziękuję za odpowiedź. – jstr069

+5

To zadziałało również dla mnie. Proszę oznaczyć to jako rozwiązanie. – dangel

Powiązane problemy