Autore Topic: Notifica ONGOING sovrascritta da altre notifiche  (Letto 636 volte)

Offline Duma

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG P500
  • Sistema operativo:
    Ubuntu 12.04
Notifica ONGOING sovrascritta da altre notifiche
« il: 06 Settembre 2012, 19:10:07 CEST »
0
Ciao a tutti,
spero di non postare un dubbio già risolto, cercando su internet non ho trovato molte informazioni a riguardo.

Brevemente: nella mia applicazione faccio partire un service che, alla sua creazione, si avvia in foreground e fa comparire la notifica da me assegnata. La notifica appare correttamente sotto la voce "In corso".
Durante l'esecuzione di questo service avvengono degli eventi che vengono notificati tramite delle altre notifiche, però avviene un problema: la prima notifica "normale" sovrascrive la notifica ONGOING.  Le successive notifiche vengono elencate senza problemi.

Come posso fare per evitare questa sovrascrittura? Nel codice non mi sembra che ci sia niente di errato, è un comportamento voluto?

Il mio codice è scritto per API 9 e lo eseguo su un dispositivo previsto di API 10.

Vi inserisco le parti del mio codice che si occupano di creare le due differenti notifiche, partendo dalla notifica per il servizio "in corso". Questo codice viene eseguito alla chiamata onStart del mio service.
Codice (Java): [Seleziona]
// faccio partire il servizio in foreground
Notification onotification = new Notification(R.drawable.ic_launcher, getString(R.string.scanner_notification_title), System.currentTimeMillis());
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
onotification.setLatestEventInfo(this, getString(R.string.scanner_notification_title),getString(R.string.scanner_notification_subtitle), pendingIntent);
       
startForeground(Notification.FLAG_ONGOING_EVENT, onotification);

Questa parte invece riguarda le notifiche normali:
Codice (Java): [Seleziona]
private void notifyNewAP(Set<String> newAPSet) {
        Iterator<String> it = newAPSet.iterator();
        String notificationString = new String(getString(R.string.found_new_AP));
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        int idCount = 2;
               
        while (it.hasNext()) {
                int icon = R.drawable.ic_launcher;
                CharSequence text = getString(R.string.found_new_AP);
                long now = System.currentTimeMillis();
                Notification notification = new Notification(icon, text, now);
               
                CharSequence contentTitle = getString(R.string.found_new_AP);
                CharSequence contentText = it.next();
                Intent notificationIntent = new Intent(this, MainActivity.class);
                PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
                       
                notification.setLatestEventInfo(getApplicationContext(), contentTitle, contentText, pendingIntent);
                notification.defaults |= Notification.DEFAULT_VIBRATE;  //Vibra
                mNotificationManager.notify(idCount++, notification);
        }
}

Spero di essere stato chiaro e che mi possiate aiutare, grazie mille!