如何使用一个活动的几个副本?

时间:2013-09-03 13:09:28

标签: android android-intent android-activity android-notifications

我的应用程序为收到的每条短信创建通知:

NotificationCompat.Builder mBuilder =
    new NotificationCompat.Builder(context)
    .setSmallIcon(android.R.drawable.stat_sys_warning)
    .setContentTitle(context.getString(R.string.notif_title))
    .setContentText(sms_from+": "+sms_body);
Intent mIntent = new Intent(context, DialogActivity.class);
mIntent.putExtra("sms_body", sms_body);
mIntent.putExtra("sms_from", sms_from);
mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent mPendingIntent =
    PendingIntent.getActivity(
    context,
    0,
    mIntent,
    PendingIntent.FLAG_UPDATE_CURRENT
);          
mBuilder.setContentIntent(mPendingIntent);

用户点击通知后,当我提取数据时,会打开DialogActivity

public class DialogActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final String sms_body = getIntent().getExtras().getString("sms_body");
        final String sms_from = getIntent().getExtras().getString("sms_from");

它适用于一条短信/通知。但是,如果收到多条短信,则在sms_from处提取的sms_bodyonCreate始终包含最后一条短信的文本。我该怎么解决这个问题?

1 个答案:

答案 0 :(得分:1)

从PendingIntent中删除标记PendingIntent.FLAG_UPDATE_CURRENT

正在做的是使用您正在投放的新值更新先前的意图。

此外,您应为每个新短信使用不同的值(非零)