我可以找到一种从通知中向活动发送参数的方法。
我有一个创建通知的服务。当用户单击通知时,我想使用一些特殊参数打开我的主要活动。例如,一个商品ID,这样我的活动就可以加载并显示一个特殊的商品详细信息视图。更具体地说,我正在下载文件,下载文件时,我希望通知具有以下意图:单击该通知后,它将以特殊模式打开我的活动。我曾尝试使用putExtra
我的意图,但似乎无法提取它,因此我认为我做错了。
我的服务中创建通知的代码:
// construct the Notification object.
final Notification notif = new Notification(R.drawable.icon, tickerText, System.currentTimeMillis());
final RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_notification_layout);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, tickerText);
contentView.setProgressBar(R.id.progress,100,0, false);
notif.contentView = contentView;
Intent notificationIntent = new Intent(context, Main.class);
notificationIntent.putExtra("item_id", "1001"); // <-- HERE I PUT THE EXTRA VALUE
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notif.contentIntent = contentIntent;
nm.notify(id, notif);
我的活动中的代码试图从通知中获取额外的参数:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
if(extras != null){
Log.i( "dd","Extra:" + extras.getString("item_id") );
}
Extras始终为null,并且我从不记录任何内容。
顺便说一句... onCreate
仅在我的活动开始时运行,如果我的活动已经开始,我也想收集额外的东西,并根据收到的item_id介绍我的活动。
有任何想法吗?
PendingIntent.getActivity()
使用flag 进行调用PendingIntent.FLAG_UPDATE_CURRENT
,否则相同的Extras将在每个通知中重复使用。