Otrzymuję tylko jedno powiadomienie, a jeśli nadejdzie kolejne powiadomienie, zastępuje poprzednie, a oto mój kod
private static void generateNotification(Context context, String message,
String key) {
int icon = R.drawable.ic_launcher;
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, message, when);
String title = context.getString(R.string.app_name);
Intent notificationIntent = new Intent(context,
FragmentOpenActivity.class);
notificationIntent.putExtra(key, key);
// set intent so it does not start a new activity
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent intent = PendingIntent.getActivity(context, 0,
notificationIntent, 0);
notification.setLatestEventInfo(context, title, message, intent);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.defaults |= Notification.DEFAULT_SOUND;
// notification.sound = Uri.parse("android.resource://" +
// context.getPackageName() + "your_sound_file_name.mp3");
notification.defaults |= Notification.DEFAULT_VIBRATE;
notificationManager.notify(0, notification);
}
android
notifications
android-notifications
Kartheek s
źródło
źródło
Odpowiedzi:
po prostu zastąp swoją linię tym
mam nadzieję, że ci to pomoże.
źródło
Unique_Integer_Number
w twoim kodzie ... i który kod powinien zastąpićProsty identyfikator notyfikacji musi być zmienny.
Po prostu utwórz losową liczbę dla notification_id.
lub możesz użyć tej metody do tworzenia liczb losowych zgodnie z tieorange (to nigdy się nie powtórzy):
i zastąp tę linię, aby dodać parametr dla identyfikatora powiadomienia, aby wygenerować liczbę losową
źródło
U mnie zadziałało korzystanie ze wspólnych preferencji
źródło
Zastąp swoją linię tym.
źródło
domyślam się, że to komuś pomoże ..
w poniższym kodzie "not_nu" to losowy int .. PendingIntent i Notification mają ten sam identyfikator .. tak, że po każdym kliknięciu powiadomienia intencja będzie kierować do innej aktywności ..
źródło
W miejscu
uniqueIntNo
wstawienia unikalnej liczby całkowitej w następujący sposób:źródło
Musisz dodać unikalny identyfikator do każdego z powiadomień, aby nie łączyły się ze sobą. Możesz użyć tego linku w celach informacyjnych:
https://github.com/sanathe06/AndroidGuide/tree/master/ExampleCompatNotificationBuilder
źródło
Rozwiązałem swój problem w ten sposób ...
źródło
Innym sposobem, aby to zrobić, jest zmierzenie aktualnej daty na długie, po prostu weź ostatnie 4 cyfry. Istnieje duże prawdopodobieństwo, że liczba będzie niepowtarzalna.
źródło
int notificationId = System.currentTimeMillis()%10000;
Wystarczy zmienić jedną linię z
notificationManager.notify(0, notification);
nanotificationManager.notify((int) System.currentTimeMillis(), notification);
...Spowoduje to zmianę identyfikatora powiadomienia za każdym razem, gdy pojawi się nowe powiadomienie
źródło
Umieść ten kod zamiast 0
Jak poniżej to działa dla mnie
źródło
Problem dotyczy twojego
notificationId
. Pomyśl o tym jak o indeksie tablicy. Za każdym razem, gdy aktualizujesz powiadomienie,notificationId
jest miejscem przechowywania wartości. Ponieważ nie zwiększasz wartości int (w tym przypadku swojejnotificationId
), zawsze zastępuje ona poprzednią. Myślę, że najlepszym rozwiązaniem jest zwiększenie go zaraz po zaktualizowaniu powiadomienia. A jeśli chcesz, aby był trwały, możesz przechowywać wartość swojego plikunotificationId
insharedPreferences
. Za każdym razem, gdy wrócisz, możesz po prostu pobrać ostatnią wartość całkowitą (notificationId
przechowywaną wsharedPreferences
) i użyć jej.źródło
Poniżej znajduje się kod dla unikalnego identyfikatora powiadomienia o przepustce:
Resetuj
notificationId
wsavedPreferences
określonym zakresie, tak jak zrobiłem to na 1000. Więc nie spowoduje to żadnych problemów w przyszłości. Daj mi znać, jeśli potrzebujesz bardziej szczegółowych informacji lub zapytań. :)źródło
Użyj następującej metody w swoim kodzie.
Wywołanie metody: -
Metoda:-
źródło
Prosty licznik może rozwiązać Twój problem.
źródło
źródło
źródło