0

我正在通知用户一些事件(在我的情况下是 SMS 接收)并挂起 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);
    }
4

1 回答 1

1

如果要重用现有活动,则需要执行以下操作。创建通知时,添加以下内容:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);

然后你需要覆盖onNewIntent()in ConversationActivity。这将被调用(而不是onCreate()如果用户单击通知并且已经有一个活动的ConversationActivity。您将需要从其中提取“附加”并IntentonNewIntent()这个新数据替换内容。

于 2013-05-29T14:53:25.583 回答