Preciso de ajuda em uma detalhe de um app que estou criando, para mostrar notificações.
Segue o código:
Button que passo os dados para o Receiver.
Intent intent = new Intent("CALARME");
intent.putExtra("descricao", m.getDescricao_lancamento());
intent.putExtra("valor", m.getValor().toString());
intent.putExtra("categoria", m.getId_categoria_fk().toString());
intent.putExtra("dia", m.getDia_referencia());
intent.putExtra("hora", m.getHora_referencia());
intent.putExtra("minuto", m.getMinuto_referencia());
PendingIntent pendingIntent = PendingIntent.getBroadcast(ActivityAdd.this, 0, intent, 0);
Calendar setcalendar = Calendar.getInstance();
setcalendar.set(Calendar.DAY_OF_MONTH, m.getDia_referencia());
setcalendar.set(Calendar.HOUR_OF_DAY, m.getHora_referencia());
setcalendar.set(Calendar.MINUTE, m.getMinuto_referencia());
setcalendar.set(Calendar.SECOND, 0);
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, setcalendar.getTimeInMillis(), pendingIntent);
Aqui o BroadcastReceiver.
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
String descricao = extras.getString("descricao");
String valor = extras.getString("valor");
String categoriaid = extras.getString("categoria");
Integer dia = extras.getInt("dia");
Integer hora = extras.getInt("hora");
Integer minuto = extras.getInt("minuto");
Lanc m = new Lanc();
m.setDescricao_lancamento(descricao);
m.setValor(Float.parseFloat(valor));
m.setId_categoria_fk(Integer.parseInt(categoriaid));
m.setDia_referencia(dia);
m.setHora_referencia(hora);
m.setMinuto_referencia(minuto);
new MyNotification().geraNotificacao(context, m);
}
E aqui a notificação.
public class MyNotification implements Serializable {
public void geraNotificacao(Context context, Lancamentos lancamentos) {
NotificationManager nm = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
PendingIntent p = PendingIntent.getActivity(context, 0, new Intent(context, ActivityResumoLancamento.class), 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setTicker("Notificação de Contas Mensais");
builder.setContentTitle(lancamentos.getDescricao_lancamento());
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher));
builder.setContentIntent(p);
NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
String[] desc = new String[]{
"Título: " + lancamentos.getDescricao_lancamento(),
"Categoria: " + lancamentos.getId_categoria_fk(),
"Valor: " + lancamentos.getValor().toString()
};
for(int i = 0; i < desc.length; i++){
style.addLine(desc[i]);
}
builder.setStyle(style);
Notification n = builder.build();
n.vibrate = new long[]{150, 300, 150, 300};
n.flags = Notification.FLAG_AUTO_CANCEL;
nm.notify(lancamentos.getDia_referencia() + lancamentos.getHora_referencia() + lancamentos.getMinuto_referencia(), n);
try {
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone ringtone = RingtoneManager.getRingtone(context, uri);
ringtone.play();
} catch (Exception e) {
System.out.print(e);
}
}
}
O que acontece é que quando agendo uma notificação para daqui a 2 min, e depois agendo outro para daqui a 4 min, as duas notificações aparecem, mas apenas com os dados da ultima, sobrescrevendo a primeira.
Como será que soluciono isso?