我正在为我的Android应用程序使用Google云消息.GCM部分正在成功运行。现在我想在用户点击状态栏中的通知图标时在UI活动中显示消息。
我使用以下代码从通知中启动 ResultShowActivity 。
Intent notificationIntent = new Intent(context, ResultShowActivity.class);
notificationIntent.putExtra("Message",msg);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,notificationIntent, 0);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
this).setSmallIcon(R.drawable.gcm_cloud)
.setContentTitle("GCM Notification")
.setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
.setAutoCancel(true)
.setSound(alarmSound)
.setContentText(msg);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
正在正确发送消息,并在GCM通知出现时正确显示,但是当我在 ResultShowActivity 中捕获意图的额外内容时,它始终显示旧消息。 我正在使用以下代码在ResultShowActivity中接收来自intent的消息。
String GCMMsg = showViewIntent.getStringExtra("Message");
我尝试使用
删除ResultShowActivityintent.removeExtra("Message");
或
intent.replaceExtras(extras);
任何人都可以建议如何从intent中检索更新的消息。感谢您提供有关此问题的任何帮助。
答案 0 :(得分:2)
请使用以下代码
int iUniqueId = (int) (System.currentTimeMillis() & 0xfffffff);
PendingIntent contentIntent = PendingIntent.getActivity(this,iUniqueId,notificationIntent, 0);
而不是遵循代码行
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,notificationIntent, 0);
希望这会有所帮助
答案 1 :(得分:1)
您需要将 Intent.FLAG_ACTIVITY_SINGLE_TOP 添加到意图标志,并将 PendingIntent.FLAG_UPDATE_CURRENT 添加到待处理的意图标志。
Intent intent = new Intent(this,YourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent =
PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
onNewIntent(Intent intent)
。当您的活动处于前台时,将调用此函数。