我正在通知用户有关某些事件(在我的情况下是短信接收)和挂起PendingIntent,如:
intent = new Intent(context, ConversationActivity.class);
intent.setAction(Constants.ACTION_SMS_RECEIVED);
intent.putExtra(MessageDAO.CONVERSATION_ID, message.getConversationId());
intent.putExtra(MessageDAO._ID, message.getId());
intent.putExtra(MessageDAO.ADDRESS, message.getAddress());
contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT );
我的目的是在没有人的情况下开始新的ConversationActivity
,或者只重用旧的PendingIntent
(刷新其内容)。但实际上我的ConversationActivity
只是使用旧的而不是刷新它的内容。我已经检查了旧的附加内容仍然发送到我的ConversationActivity.onCreate()
有什么问题?我真的被它困住了,无法理解该怎么做......
更新
我正在提取目标Bundle bundle=this.getIntent().getExtras();
if(bundle!=null) {
conversationId=bundle.getString(MessageDAO.CONVERSATION_ID);
address=bundle.getString(MessageDAO.ADDRESS);
}
中的额外内容,例如:
{{1}}
答案 0 :(得分:1)
如果要重用现有活动,则需要执行以下操作。创建通知时,请添加以下内容:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
然后,您需要覆盖onNewIntent()
中的ConversationActivity
。如果用户点击通知并且已经存在有效onCreate()
,则会调用此代码(而不是ConversationActivity
。您需要从{{1}中提取" extras"在Intent
中使用此新数据替换内容。