Android - java.lang.IllegalArgumentException: contentIntent erforderlich durch Benachrichtigung verursacht Fehler?
-
29-09-2019 - |
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?
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");