Android - java.lang.IllegalArgumentException: contentIntent requiere error causado por la notificación?
-
29-09-2019 - |
Pregunta
Tengo un servicio que se ejecuta que las actualizaciones de una notificación en la barra de notificaciones cuando se recieves un mensaje que dice que tiene que ser cambiado.
Sin embargo, me sale el siguiente error a veces, cuando la notificación se va a actualizar
java.lang.IllegalArgumentException: contentIntent required
Aquí está mi código:
configuración variable
int icon = R.drawable.notification;
CharSequence tickerText = "Test";
long when = System.currentTimeMillis();
PendingIntent contentIntent;
Notification notification = new Notification(icon, tickerText, when);
NotificationManager mNotificationManager;
NotificationManager Creación
String ns = Context.NOTIFICATION_SERVICE;
mNotificationManager = (NotificationManager) getSystemService(ns);
Creación de notificaciones
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);
Actualización de notificación
notification.icon = R.drawable.notification2;
notification.setLatestEventInfo(getApplicationContext(), "Registered", "Test", contentIntent);
mNotificationManager.notify(1, notification);
Así que algo está pasando en alguna parte de mi contentIntent largo de la línea, ¿sería correcto?
Se declara en la parte superior de mi clase de servicio como una variable miembro y no se utiliza en ningún otro lugar en el código aparte de la muestra arriba, así que ¿dónde podría estar recibiendo restablece a cero?
Solución
es necesario configurar el contentIntent para su notificación.
en su caso:
notification.contentIntent = notificationIntent;
de lo contrario se recibe el mensaje, que el contentIntent de la notificación es nula, ya que no se establece.
el docu está aquí: http://developer.android.com /reference/android/app/Notification.html#contentIntent
He aquí un pequeño ejemplo: http://united-coders.com/nico-heid/show-progressbar-in-notification-area-like-google-does-when-downloading-from-android
Otros consejos
creo que esto es debido a que el sistema operativo Android versión
La versión 2.3 o bajar , de ajuste se tiene contentIntent , en caso contrario, obtendrá esta excepción.
En mi proyecto, escribo como esto:
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; }
Tal vez esto podría ayudarle!
En su caso
contentIntent = PendingIntent.getActivity (esto, 0, notificationIntent, 0);
Si desea utilizar Intentos con la misma acción, pero diferentes extras:
1) Cambiar
requestCode
por defecto de "0" en
getActivity (Context context, int requestCode, Intent intent, int flags)
a algo único como `
(int) System.currentTimeMillis();
` 2)
notification.contentIntent = notificationIntent;
Los dos pasos son obligatorios, ya que:
- Opción 2 no funcionará sin la opción 1.
- Opción 1 tirará sin IllegalArgumentException 2.
En mi caso, yo tenía un código de ejemplo para hacer, con una única notificación para crear, y también me puso "contentIntent requiere" error - Google me llevó a este tema: D
el origen de este problema eran las citas que he copiado de un código de ejemplo y lo pegó en el proyecto Eclipse. Cuando he eliminado "" y se hayan escrito atrás y problema fue resuelto. Tal vez esto ayude a alguien.
Estos eran citas fuente de error: nb.setContentTitle ( "Mi primera notificación!"); nb.setContentText ( "Hola");