【发布时间】:2011-11-21 19:00:33
【问题描述】:
您好,我正面临这个问题。我有一个包含 2 个活动的应用程序: -显示汽车列表的活动 A(主要活动) - 如果你点击一个项目列表,Activity B 就会开始显示汽车的详细信息。
在活动 B 中,您可以下载与该车相关的信息,负责下载的服务 C 将启动,并且通知栏会添加通知。如果您单击通知,您应该会看到 Activity B 显示与该特定汽车相关的详细信息。
我的问题如下:活动 B 获得了这个额外的意图:carID 因此,在 onCreate 中,它会额外读取此内容并询问数据库以获取该特定汽车的详细信息。 当我从活动 A 调用活动 B 时,一切正常。但是当我从通知栏中调用活动 B 时,它不会。它总是能得到关于我选择的第一辆车的详细信息。 例如,我下载了法拉利的详细信息,然后下载了兰博基尼的详细信息....
在我的通知中,我将看到 2 个通知,但它们都打开了显示法拉利详细信息的活动 B。
这就是我在服务 C 中创建通知的方式:
int icon = icona;
CharSequence tickerText = message;
long when = System.currentTimeMillis();
Context context = getApplicationContext();
CharSequence contentTitle = message;
CharSequence contentText = appName;
Intent notificationIntent;
notificationIntent = new Intent(this, ActivityB.class);
notificationIntent.putExtra("carId", carId);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
mNotificationManager.notify(NOT_ID, notification);
这就是我在活动 B 中接收意图的方式:
Intent myIntent = getIntent();
appId = myIntent.getIntExtra("carId", 0);
一开始我根本没有从通知中收到任何意图.....然后我添加了 PendingIntent.FLAG_UPDATE_CURRENT,正如您在上面看到的那样,我明白了,但它始终是第一个。我已经验证了,我为每个意向添加了正确的 carId,但我得到了另一个......并且每次打开通知时都会出现此日志消息:
startActivity 从非 Activity 上下文中调用;强制 Intent.FLAG_ACTIVITY_NEW_TASK 用于:Intent { cmp=market.finestraprincipale/.ApplicationActivity bnds=[0,101][320,165](有附加功能)}
有人可以帮我吗……
【问题讨论】:
-
ID = 0 你总是得到吗?
-
在开始时我总是得到 id = 0.......然后我取消了这一行 PendingIntent.getActivity(this, 0, notificationIntent, 0);到 PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);现在我得到了一个值,但它总是一样的......可能是最后一个意图中的 id 被触发了......但我在每个意图中插入了不同的 id :(
标签: android notifications android-intent flags