如何在通知中传递额外内容?

时间:2011-06-03 14:30:44

标签: android

我的应用程序中有2个活动,我希望活动X弹出一个通知 - 一旦点击活动Y打开并从通知中读取参数。

所以我写了这个:

        String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

    CharSequence tickerText = NOTIFY_TICKER_NAME;
    long when = System.currentTimeMillis();

    Notification notification = new Notification(R.drawable.icon, tickerText, when);

    Context context = getApplicationContext();
    CharSequence contentTitle = "My notification";
    CharSequence contentText = "Hello World!";
    Intent notificationIntent = new Intent(this, PopTask.class);
    notificationIntent.putExtra("task", "http://www.google.com");
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

    mNotificationManager.notify(1, notification);

问题是,当我尝试阅读附加内容时 - 我得到null。

我该怎么办?

由于

2 个答案:

答案 0 :(得分:3)

oshafran,

为了让putExtra()在这种情况下工作,您还必须使用setAction()。我不完全确定为什么会这样......似乎有些怪癖。 setAction()中传递的值可以是任何值。

尝试:

Intent notificationIntent = new Intent(this, PopTask.class);
notificationIntent.putExtra("task", "http://www.google.com");
notificationIntent.setAction("MyIntent");

答案 1 :(得分:0)

可能更好的解决方案是在创建PendingIntent时使用PendingIntent.FLAG_UPDATE_CURRENT

Intent intent = new Intent(context, YourActivity.class);
intent.putExtra(YOUR_EXTRA_KEY, "Your Extra");
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);