Android - java.lang.IllegalArgumentException: contentIntent erforderlich durch Benachrichtigung verursacht Fehler?

StackOverflow https://stackoverflow.com/questions/3112008

Frage

Ich habe einen Dienst, den Updates eine Benachrichtigung in der Benachrichtigungsleiste ausgeführt wird, wenn es eine Nachricht recieves sagen, es geändert werden muss.

Jedoch habe ich die folgende Fehlermeldung manchmal erhalten, wenn die Benachrichtigung aktualisiert wird

java.lang.IllegalArgumentException: contentIntent required

Hier ist mein Code:

Variable Setup


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

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

NotificationManager mNotificationManager;

NotificationManager Creation


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

Notification Creation


    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);

Update Notification


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

So etwas ist mein contentIntent irgendwo entlang der Strecke passiert, wäre das richtig sein?

Es ist an der Spitze meiner Service-Klasse als Mitglied Variable deklariert und nicht irgendwo sonst im Code abgesehen von oben gezeigt verwendet, also wo könnte es wieder auf Null bekommen?

War es hilfreich?

Lösung

Sie müssen die contentIntent für Ihre Mitteilung einzustellen.

in Ihrem Fall:

notification.contentIntent = notificationIntent;

sonst wird die Meldung, dass der contentIntent der Mitteilung null ist, weil er nicht gesetzt ist.

Die Doku ist hier: http://developer.android.com /reference/android/app/Notification.html#contentIntent

ich habe ein kleines Beispiel hier: http://united-coders.com/nico-heid/show-progressbar-in-notification-area-like-google-does-when-downloading-from-android

Andere Tipps

Ich denke, das liegt daran, dass die Android OS Version

Die Version 2.3 oder senken , muss gesetzt contentIntent , wenn nicht, werden Sie diese Ausnahme erhalten.

In meinem Projekt, schreibe ich wie folgt aus:

  

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; }

Vielleicht könnte Ihnen helfen!

In Ihrem Fall

  

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

Wenn Sie wollen Intents mit der gleichen Aktion verwenden, aber verschiedene Extras:

1) Änderung

  

requestCode

von default "0" in

  

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

zu etwas Einmaliges wie `

  

(int) System.currentTimeMillis();

` 2)

  

notification.contentIntent = notificationIntent;

Beide Schritte sind obligatorisch, weil:

  • Option 2 wird nicht funktionieren ohne Option 1.
  • Option 1 wird Illegal werfen, ohne 2.

In meinem Fall hatte ich einen Beispiel-Code zu tun, mit einer einzigen Mitteilung zu erstellen, und ich habe auch Fehler „contentIntent erforderlich“ - Google brachte mich auf diesen Thread: D

die Quelle dieses Problem waren Zitate, dass ich aus einem Beispielcode kopiert und es in Eclipse-Projekt eingefügt. Als ich „“ gelöscht und tippte sich zurück und wurde Problem gelöst. Vielleicht hilft jemand.

Diese waren Zitate Fehlerquelle: nb.setContentTitle ( "Meine erste Meldung!"); nb.setContentText ( "Hallo");

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top