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创build


  String ns = Context.NOTIFICATION_SERVICE; mNotificationManager = (NotificationManager) getSystemService(ns); 

通知创build


  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类的顶部被声明为一个成员variables,除了上面显示的代码之外,在其他任何地方都没有使用,所以它在哪里可以重置为null?

Solutions Collecting From Web of "Android – java.lang.IllegalArgumentException:contentIntent通知所需的错误?"

您需要为您的通知设置contentIntent。

在你的情况下:

 notification.contentIntent = notificationIntent; 

否则你会得到消息,通知的contentIntent为空,因为它没有设置。

文件是在这里: 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

我想这是因为Android操作系统版本

版本2.3或更低 ,必须设置contentIntent ,如果没有,你会得到这个exception。

在我的项目中,我写这样的:

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

也许这可以帮助你!

在你的情况

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

如果你想用同一个动作但不同的额外的Intents:

1)改变

requestCode

从默认的“0”中

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

到像“一样独特的东西

(int) System.currentTimeMillis();

2)

notification.contentIntent = notificationIntent;

这两个步骤都是强制性的,

  • 没有选项1,选项2将不起作用。
  • 选项1将抛出IllegalArgumentException而不是2。

在我的情况下,我有一个示例代码做,用一个单一的通知来创build,我也得到了“contentIntent required”的错误 – 谷歌带我到这个线程:D

这个问题的来源是我从示例代码中复制的引用,并将其粘贴到eclipse项目中。 当我删除“”并input回来,问题解决了。 也许这有助于某人。

这些是引用错误的来源: nb.setContentTitle(“我的第一个通知!”); nb.setContentText( “你好”);