Domanda

Ho un servizio in esecuzione che gli aggiornamenti di una notifica nella barra di notifica quando si riceve un messaggio che dice che deve essere cambiato.

Tuttavia ottengo il seguente errore a volte quando la notifica deve essere aggiornato

java.lang.IllegalArgumentException: contentIntent required

Ecco il mio codice:

configurazione variabile


int icon = R.drawable.notification;
CharSequence tickerText = "Test";
long when = System.currentTimeMillis();
PendingIntent contentIntent;

Notification notification = new Notification(icon, tickerText, when);

NotificationManager mNotificationManager;

NotificationManager Creazione


    String ns = Context.NOTIFICATION_SERVICE;
    mNotificationManager = (NotificationManager) getSystemService(ns);

La creazione di notifica


    Intent notificationIntent = new Intent(this, TestsApp.class);
    contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    notification.flags |= Notification.FLAG_NO_CLEAR;
    notification.icon = R.drawable.notification3;
    notification.setLatestEventInfo(this, "Registering", "Test", contentIntent);
    mNotificationManager.notify(1, notification);

Aggiornamento di notifica


    notification.icon = R.drawable.notification2;
    notification.setLatestEventInfo(getApplicationContext(), "Registered", "Test", contentIntent);
    mNotificationManager.notify(1, notification);   

Quindi, qualcosa sta accadendo da qualche parte il mio contentIntent lungo la linea, vorrei che essere corretto?

Si è dichiarato in cima alla mia classe di servizio come una variabile membro e non viene utilizzato in qualsiasi altra parte del codice a parte mostrato sopra, in modo da dove potrebbe essere sempre riportato a nulla?

È stato utile?

Soluzione

è necessario impostare la contentIntent per la notifica.

nel tuo caso:

notification.contentIntent = notificationIntent;

altrimenti si ottiene il messaggio, che il contentIntent della notifica è nullo, perché non è impostato.

docu è qui: http://developer.android.com /reference/android/app/Notification.html#contentIntent

ho un piccolo esempio qui: http://united-coders.com/nico-heid/show-progressbar-in-notification-area-like-google-does-when-downloading-from-android

Altri suggerimenti

Credo che questo è perché il sistema operativo Android versione

La versione 2.3 o abbassare , insieme must contentIntent , in caso contrario, si otterrà questa eccezione.

Nel mio progetto, scrivo in questo modo:

  

if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { Intent intent = new Intent(); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0); mNotification.contentIntent = contentIntent; }

Forse questo potrebbe aiutare!

Nel vostro caso

  

contentIntent = PendingIntent.getActivity (questo, 0, notificationIntent,   0);

se si desidera utilizzare Intenti con la stessa azione ma diversi extra:

1) Modifica

  

requestCode

dal default "0" in

  

getActivity (Context context, int requestCode, Intent intent, int flags)

a qualcosa di unico come `

  

(int) System.currentTimeMillis();

` 2)

  

notification.contentIntent = notificationIntent;

Entrambi i passaggi sono obbligatori perché:

  • Opzione 2 non funzionerà senza opzione 1.
  • Opzione 1 getterà IllegalArgumentException senza 2.

Nel mio caso, ho avuto un codice di esempio per fare, con una singola notifica per creare, e ho anche avuto "contentIntent richiesto" Errore - google mi ha portato a questo thread: D

la fonte di questo problema fosse citazioni che ho copiato da un codice di esempio e incollato in progetto Eclipse. Quando ho cancellato "" e li digitato indietro e problema è stato risolto. Forse questo aiuta qualcuno.

Queste erano le citazioni fonte di errore: nb.setContentTitle ( "La mia prima notifica!"); nb.setContentText ( "Ciao");

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top