-1

Ich habe eine Liste mit Elementen, in jedem Element kann der Benutzer eine Benachrichtigung für sie festlegen, und öffnen Sie es dann aus der Benachrichtigung. Es funktioniert gut, aber ich kann nur eine Benachrichtigung einstellen, es spielt keine Rolle, ob es von demselben oder einem anderen Element stammt. Wenn ich mehr als eins einstelle, wird nur das letzte angezeigt. Ich weiß nicht, was ich noch tun kann. Hier ist mein CodeSo legen Sie mehrere Benachrichtigungen mit AlarmManager in Android fest

innerhalb der Artikeldetail Klasse

Long alertTime = new GregorianCalendar().getTimeInMillis() + 7 * 1000; 

     Intent alertIntent = new Intent(getApplicationContext(), AlertReceiver.class); 
     alertIntent.putExtra(DataBaseManager.CN_ID_APLICACION, idAplicacion); 

     AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, alertTime, PendingIntent.getBroadcast(getApplicationContext(), 1, alertIntent, 
       PendingIntent.FLAG_UPDATE_CURRENT)); 

der Empfänger:

public class AlertReceiver extends BroadcastReceiver { 
int idAplicacion; 


@Override 
public void onReceive(Context context, Intent intent) { 

    idAplicacion = intent.getIntExtra(DataBaseManager.CN_ID_APLICACION, idAplicacion); 

    Log.e("TESTING", "the id is " + String.valueOf(idAplicacion)); 
    createNotification(context, "some title", "some message text", "some sticker"); 
} 

public void createNotification(Context context, String title, String msgText, String sticker) 
{ 

    Intent i = new Intent(context, DetalleAplicacionActivity.class); 
    i.putExtra(DataBaseManager.CN_ID_APLICACION, idAplicacion); 


    PendingIntent notificIntent = PendingIntent.getActivity(context,0, i ,PendingIntent.FLAG_CANCEL_CURRENT); 


    NotificationCompat.Builder mBuilder = new 
      NotificationCompat.Builder(context) 
      .setContentTitle(title) 
      .setContentText(msgText) 
      .setTicker(sticker) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher)); 


    mBuilder.setContentIntent(notificIntent); 
    mBuilder.setDefaults(NotificationCompat.DEFAULT_VIBRATE); 
    mBuilder.setAutoCancel(true); 

    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    mNotificationManager.notify(NotificationID.getID(), mBuilder.build()); 

    } 
} 

und public class NotificationID {

private final static AtomicInteger c = new AtomicInteger(0); 

    public static int getID() { 
     return c.incrementAndGet(); 
    } 
} 

manifestieren

 <uses-permissionandroid:name="com.android.alarm.permission.SET_ALARM"/> 

    <receiver android:name=".Clases.AlertReceiver"/> 
+0

Sie müssen die Schaffung eine andere 'requestCode' für jeden Alarm verwenden, finden Sie hier: http://stackoverflow.com/questions/12785702/android-set-multiple- Alarme –

+0

Danke! Du hast Recht :) – MaxFraire

Antwort

1

Der Grund ist, dass Sie Benachrichtigungen mit dem gleichen requestCode erstellen - so dass sie alle von Android als die gleiche Benachrichtigung angedroht werden, aktualisieren Sie es einfach.

Abwechslung Verwenden Sie während Benachrichtigungen

public void createNotification(Context context, String title, String msgText, String sticker) { 
    ... 
    PendingIntent notificIntent = PendingIntent.getActivity(context, 
      java.util.Random.nextInt(100000), i ,PendingIntent.FLAG_CANCEL_CURRENT); 
    ... 
} 
+0

Danke !! Ich habe diesen Teil vermisst. Es funktioniert jetzt – MaxFraire

Verwandte Themen