开发者

Sending different parameters to pendingIntent through notification

开发者 https://www.devze.com 2023-01-05 17:29 出处:网络
My target: download files in parallel, and when file downloads complete, I get notifications. Those notifications are suppose to launch an activity when you click on it which gets unique parameters t

My target: download files in parallel, and when file downloads complete, I get notifications.

Those notifications are suppose to launch an activity when you click on it which gets unique parameters through putExtra.

The problem is that I can't have different values in eac开发者_如何学Ch launch of that activity.

Each time the activity, which is being launched through the notification bar, launches it destroys the extra of the ones which haven't been launched yet (the ones that still appear on the notification bar).

How do I keep all my notifications with their own parameters?

Here is my code:

if (messagesManager == null)
{
    messagesManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
}

notification = new Notification(R.drawable.icon, message, System.currentTimeMillis());

// for launch activity
Intent intent = new Intent(context, DialogActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("fileName", fileName); //- this is where i put my extra's!!
intent.putExtra("onSdcard", onSdcard);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

notification.setLatestEventInfo(context, "DownloadManager", message, contentIntent);
notification.flags = notification.FLAG_AUTO_CANCEL;
int noticeId = generateNotificationId(requestId);
messagesManager.notify(noticeId, notification);

Now this is the dialog activity:

protected void onCreate(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    Intent i = getIntent();
    boolean onSdcard = i.getBooleanExtra("onSdcard", true);
    String fileName = i.getStringExtra("fileName");
    ...
}

I tried to use this technique as it was written in another post here, but it didn't work.

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);


Please check the linked duplicate,

you need two things

  • you need to add an action string
  • the action string must be unique, probably a timestamp added to it would be good
0

精彩评论

暂无评论...
验证码 换一张
取 消