嗨我正在尝试在接收广播消息时在BroadcastReceiver中发送通知。来自Parse.com。但是当从NotificationCompat.Builder的实例调用getNotification方法时,通知会自动发送并显示一个预设的contextText。因此,当调用mNotificationManager.notify时,会显示两个通知,一个指定内容文本,另一个没有。我在API级别16上。
以下是我在BroadcastReceiver中的代码,请帮助我。非常感谢你!
@Override
public void onReceive(Context context, Intent intent) {
try {
String action = intent.getAction();
if (intent.getExtras() != null) {
JSONObject json = new JSONObject(intent.getExtras().getString(
"com.parse.Data"));
String text = json.getString("text");
String title = json.getString("title");
Long timestamp = json.getLong("timestamp");
String qid = json.getString("qid");
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
context).setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(title)
.setContentText(text)
.setTicker("New Reply");
Intent resultIntent = new Intent(context,
QuestionViewActivity.class);
resultIntent.putExtra(QuestionViewActivity.EXTRA_QUESTION_ID,
qid);
TaskStackBuilder stackBuilder = TaskStackBuilder.from(context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder
.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification n = mBuilder.getNotification();
mNotificationManager.notify(qid.hashCode(),
mBuilder.getNotification());
}
答案 0 :(得分:2)
我终于明白了:
对于no build()方法:它是由ActionBarSherlock使用旧版本的android-support-v4.jar引起的。只需使用/SDK/extras/android/support/v4/android-support-v4.jar
对于重复通知:它是由Parse(parse.com)服务引起的。当接收到任何带有解析通知lib并且在JSON数据中带有“标题”的推送时,该服务会自动显示带有内容文本的通知,例如“您收到通知”。我用来禁用自动通知的一个技巧是不要在解析Push的JSON数据中使用“title”和“text”,而是使用其他名称,然后在自定义广播接收器中解析它。它现在工作正常。
谢谢!
答案 1 :(得分:0)
http://developer.android.com/reference/android/app/Notification.Builder.html#build()
不推荐使用getNotification()。为什么不使用build()?