Estou recebendo apenas uma notificação e se houver outra notificação, ela substituirá a anterior e aqui está o meu código
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
fonte
fonte
Respostas:
apenas substitua sua linha por esta
espero que ajude você.
fonte
Unique_Integer_Number
em seu código ... e qual código ele deve substituirO notification_id simples precisa ser alterável.
Basta criar um número aleatório para notification_id.
ou você pode usar este método para criar um número aleatório conforme informado por tieorange (isso nunca será repetido):
e substitua esta linha para adicionar parâmetro para id de notificação para gerar um número aleatório
fonte
Usar preferências compartilhadas funcionou para mim
fonte
Substitua sua linha por esta.
fonte
Acho que isso vai ajudar alguém ..
no código abaixo "not_nu" é um intent aleatório .. PendingIntent e Notification têm o mesmo ID .. de modo que em cada clique de notificação o intent irá direcionar para atividades diferentes ..
fonte
No lugar de
uniqueIntNo
colocar um número inteiro único como este:fonte
Você precisa adicionar um ID exclusivo a cada uma das notificações para que elas não se combinem. Você pode usar este link para sua referência:
https://github.com/sanathe06/AndroidGuide/tree/master/ExampleCompatNotificationBuilder
fonte
Resolvi meu problema assim ...
fonte
Outra maneira de fazer isso é pegar a data atual e convertê-la em longa, basta pegar os últimos 4 dígitos. Existe uma grande probabilidade de que o número seja único.
fonte
int notificationId = System.currentTimeMillis()%10000;
Você só precisa alterar sua linha de
notificationManager.notify(0, notification);
paranotificationManager.notify((int) System.currentTimeMillis(), notification);
...Isso mudará o id da notificação sempre que a nova notificação for exibida
fonte
Coloque este código em vez de 0
Como abaixo, funciona para mim
fonte
O problema é com o seu
notificationId
. Pense nisso como um índice de array. Cada vez que você atualiza sua notificação,notificationId
é o lugar que leva para armazenar o valor. Como você não está incrementando seu valor int (neste caso, seunotificationId
), ele sempre substitui o anterior. A melhor solução, eu acho, é incrementá-lo logo após atualizar uma notificação. E se quiser mantê-lo persistente, você pode armazenar o valor de seunotificationId
insharedPreferences
. Sempre que você voltar, você pode simplesmente pegar o último valor inteiro (notificationId
armazenado emsharedPreferences
) e usá-lo.fonte
Abaixo está o código para o ID de notificação exclusivo:
Reinicie
notificationId
emsavedPreferences
um intervalo específico como fiz em 1000. Portanto, não criará nenhum problema no futuro. Deixe-me saber se você precisar de mais informações detalhadas ou qualquer dúvida. :)fonte
Use o seguinte método em seu código.
Chamada de método: -
Método:-
fonte
Um simples contador pode resolver seu problema.
fonte
fonte
fonte