Android - java.lang.IllegalArgumentException: contentIntent требуется ошибка, вызванная уведомлением? - PullRequest
18 голосов
/ 24 июня 2010

У меня запущена служба, которая обновляет уведомление в панели уведомлений, когда получает сообщение о необходимости его изменения.

Однако иногда я получаю следующую ошибку при обновлении уведомления

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

Итак, что-то происходит с моим контентом, намерением, где-то вдоль линии, это будет правильно?

Он объявлен в верхней части моего класса Service как переменная-член и не используется где-либо еще в коде, кроме показанного выше, так где же он мог получить сброс до нуля?

Ответы [ 4 ]

15 голосов
/ 13 сентября 2010

вам нужно установить contentIntent для вашего уведомления.

в вашем случае:

notification.contentIntent = notificationIntent;

в противном случае вы получите сообщение о том, что contentIntent уведомления равно нулю, поскольку оно не установлено.

Документ находится здесь: http://developer.android.com/reference/android/app/Notification.html#contentIntent

У меня есть небольшой пример здесь: http://united -coders.com / nico-heid / show-progressbar-in-уведомления-области-как-Google-делает-при-загрузки-от-Android

3 голосов
/ 15 мая 2015

Я думаю, это потому, что версия Android OS

Версия 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; }

Возможно, это могло бы вам помочь!

2 голосов
/ 30 ноября 2011

В вашем случае

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

, если вы хотите использовать Intents с тем же действием, норазличные дополнения:

1) Изменить

requestCode

по умолчанию "0" в

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

на что-то уникальное, например `

(int) System.currentTimeMillis();

` 2)

уведомление.contentIntent = messagesIntent;

Оба шага являются обязательными, поскольку:

  • Опция 2 не будет работать без опции 1.
  • Опция 1 вызовет исключение IllegalArgumentException без 2.
0 голосов
/ 16 июня 2013

В моем случае у меня был пример кода для создания одного уведомления, и я также получил ошибку «contentIntent required» - Google привел меня к этой теме: D

источник этогоПроблемой были цитаты, которые я скопировал из примера кода и вставил в проект Eclipse.Когда я удалил "" и набрал их обратно, проблема была решена.Может быть, это кому-то поможет.

Это были цитаты, источник ошибки: nb.setContentTitle («Мое первое уведомление!»);nb.setContentText ( "Hello");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...