Android - java.lang.IllegalArgumentException: contentIntent требуется ошибка, вызванная уведомлением?
У меня есть служба, которая обновляет уведомление в панели уведомлений, когда получает сообщение о том, что оно должно быть изменено.
Однако иногда я получаю следующую ошибку, когда уведомление должно быть обновлено
java.lang.IllegalArgumentException: contentIntent required
Вот мой код:
Переменная настройка
int icon = R.drawable.notification;
CharSequence tickerText = "Test";
long when = System.currentTimeMillis();
PendingIntent contentIntent;
Notification notification = new Notification(icon, tickerText, when);
NotificationManager mNotificationManager;
Создание NotificationManager
String ns = Context.NOTIFICATION_SERVICE;
mNotificationManager = (NotificationManager) getSystemService(ns);
Создание уведомления
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);
Обновление уведомления
notification.icon = R.drawable.notification2;
notification.setLatestEventInfo(getApplicationContext(), "Registered", "Test", contentIntent);
mNotificationManager.notify(1, notification);
Итак, что-то происходит в моем contentIntent где-то вдоль линии, было бы правильно?
Он объявлен в верхней части моего класса Service как переменная-член и не используется где-либо еще в коде, кроме указанного выше, поэтому, где бы он мог получить reset до нуля?
Ответы
Ответ 1
вам нужно установить contentIntent для вашего уведомления.
в вашем случае:
notification.contentIntent = notificationIntent;
в противном случае вы получите сообщение, что contentIntent уведомления равно null, потому что он не установлен.
документ находится здесь: http://developer.android.com/reference/android/app/Notification.html#contentIntent
У меня есть небольшой пример: http://united-coders.com/nico-heid/show-progressbar-in-notification-area-like-google-does-when-downloading-from-android
Ответ 2
Я думаю, что это потому, что версия ОС Android
Версия 2.3 или ниже должна установить contentIntent, если нет, вы получите это исключение.
В моем проекте я пишу вот так:
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;
}
Возможно, это поможет вам!
Ответ 3
В вашем случае
contentIntent = PendingIntent.getActivity(это, 0, notificationIntent, 0);
если вы хотите использовать намерения с тем же действием, но с другими дополнениями:
1) Измените
requestCode
по умолчанию "0" в
getActivity (Context context, int requestCode, Intent intent, int
flags)
для чего-то уникального типа `
(int) System.currentTimeMillis();
`
2)
notification.contentIntent = notificationIntent;
Оба этапа являются обязательными, поскольку:
- Вариант 2 не будет работать без опции 1.
- Вариант 1 будет вызывать исключение IllegalArgumentException без 2.
Ответ 4
В моем случае у меня был пример кода для создания с одним уведомлением для создания, а также я получил ошибку "contentIntent" - google привел меня в этот поток: D
источником этой проблемы были цитаты, которые я скопировал из примера кода и вставил в проект eclipse. Когда я удалил "" и набрал их обратно, и проблема была решена. Возможно, это помогает кому-то.
Это были котировки источника ошибки:
nb.setContentTitle( "Мое первое уведомление!" );
nb.setContentText( "Привет" );