我有一个服务正在运行,当它收到一条消息说它必须被更改时,会在通知栏中更新通知。
但是,有时在更新通知时会出现以下错误
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类的顶部被声明为一个成员变量,并且除了上面显示的代码之外没有在代码中的任何其他地方使用,所以它可以在哪里重置为null?
答案 0 :(得分:15)
您需要为通知设置contentIntent。
在你的情况下:
notification.contentIntent = notificationIntent;
否则你会收到消息,通知的contentIntent为null,因为它没有设置。
文件在这里:http://developer.android.com/reference/android/app/Notification.html#contentIntent
答案 1 :(得分:3)
我认为这是因为Android操作系统版本
版本 2.3或更低,必须设置 contentIntent ,否则,您将收到此例外。
在我的项目中,我这样写:
$(document).ready(function() { $('div').mouseenter(function() { $(this).animate({ height: '+=10px' }); }); $('div').mouseleave(function() { $(this).animate({ height: '-=10px' }); }); $('div').click(function() { $(this).toggle(1000); }); });
也许这可以帮到你!
答案 2 :(得分:2)
在你的情况下
contentIntent = PendingIntent.getActivity(this,0,notificationIntent, 0);
如果您想使用具有相同操作但具有不同附加功能的Intent:
1)改变
requestCode
中的默认值“0”
getActivity (Context context, int requestCode, Intent intent, int flags)
像`
这样独特的东西
(int) System.currentTimeMillis();
` 2)
notification.contentIntent = notificationIntent;
这两个步骤都是强制性的,因为:
答案 3 :(得分:0)
在我的情况下,我有一个示例代码要做,只有一个Notification要创建,而且我还有“contentIntent required”错误 - 谷歌把我带到了这个帖子:D
这个问题的根源是我从示例代码中复制并在eclipse项目中粘贴它的引用。当我删除“”并键入它们并解决问题。也许这有助于某人。
这些是引用错误的来源: nb.setContentTitle(“我的第一个通知!”); nb.setContentText( “你好”);