Подтвердить что ты не робот

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 до нуля?

4b9b3361

Ответ 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( "Привет" );