8

Breve domanda:Come utilizzare NotificationCompat.Builder e startForeground?

Sto cercando di utilizzare la classe NotificationCompat.Builder per creare una notifica che verrà utilizzata per il servizio, ma per qualche motivo, non vedo la notifica o posso cancellarlo quando il servizio dovrebbe essere distrutto (o fermarsi dall'essere in primo piano).

il mio codice:

@Override 
public int onStartCommand(final Intent intent, final int flags, final int startId) { 
    final String action = intent == null ? null : intent.getAction(); 
    Log.d("APP", "service action:" + action); 
    if (ACTION_ENABLE_STICKING.equals(action)) { 
     final NotificationCompat.Builder builder = new Builder(this); 
     builder.setSmallIcon(R.drawable.ic_launcher); 
     builder.setContentTitle("content title"); 
     builder.setTicker("ticker"); 
     builder.setContentText("content text"); 
     final Intent notificationIntent = new Intent(this, FakeActivity.class); 
     final PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
     builder.setContentIntent(pi); 
     final Notification notification = builder.build(); 
     // notification.flags |= Notification.FLAG_FOREGROUND_SERVICE; 
     // notification.flags |= Notification.FLAG_NO_CLEAR; 
     // notification.flags |= Notification.FLAG_ONGOING_EVENT; 

     startForeground(NOTIFICATION_ID, notification); 
     // mNotificationManager.notify(NOTIFICATION_ID, notification); 

    } else if (ACTION_DISABLE_STICKING.equals(action)) { 
     stopForeground(true); 
     stopSelf(); 
     // mNotificationManager.cancel(NOTIFICATION_ID); 
    } 
    return super.onStartCommand(intent, flags, startId); 
} 

I comandi commentati sono le mie prove per farlo funzionare. nessuno ha funzionato per qualche motivo.

Ho persino aggiunto un'attività falsa poiché desiderava contentIntent, ma non funziona ancora.

Qualcuno può aiutare per favore?

+0

Questo post, insieme con la risposta accettata, fisso il mio problema dopo aver lavorato per giorni su una soluzione. –

risposta

9

Ho avuto lo stesso identico problema qualche tempo fa e ho scoperto che per qualche motivo, l'ID di notifica 0 non funziona bene con startForeground(), è il valore di NOTIFICATION_ID nel codice?


EDIT: la documentazione è ora stato aggiornato per affermare che 0 è un ID non valido

+0

sì. è. non pensavo di cambiarlo dato che di solito inizio con questo numero per tutto ... certo che lo risolverà? –

+0

Avevo trovato la risposta [lì] (http://stackoverflow.com/questions/8725909/startforeground-does-not-show-my-notification), a quanto pare è noto. Lo ha risolto sia per me che per l'OP di quel post, quindi dovrebbe risolvere anche il tuo problema. Il modo migliore per sapere è provare :) – Joffrey

+0

ogni volta che mi dico che non riesco a trovare alcun bug più strano su Android ... –