您的位置:首页 > 移动开发 > Android开发

android 使用Notification弹多个通知时,点击跳转intent取值时总是最后一个

2016-04-21 11:42 696 查看
最近开发中模块功能,使用NotificationManager触发多个Notification:

private void showIMNotification(Context context, String ticker,
Bitmap defaultBitmap, UnreadEntity unreadEntity, int notificationId) {
Intent intent = new Intent(CHATATION_FLAG);
intent.putExtra("chat_session_key", unreadEntity.getSessionKey());
NotificationManager manager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notify1 = new Notification();
notify1.icon = R.drawable.logo;
notify1.when = System.currentTimeMillis();
String appName = "";
try {
ApplicationInfo appInfo = context.getPackageManager()
.getApplicationInfo(
PhoneTools.getPackageInfo(context).packageName,
PackageManager.GET_META_DATA);
appName = appInfo.metaData.getString("MY_APP_LABEL");
} catch (NameNotFoundException e) {
e.printStackTrace();
appName = context.getString(R.string.app_name);
}
notify1.tickerText = ticker;
notify1.setLatestEventInfo(context, appName, ticker, pendingIntent);
notify1.number = 1;
notify1.flags |= Notification.FLAG_AUTO_CANCEL;
manager.notify(notificationId, notify1);
}
每次调用都是新的intent,但是跳转到对应的activity取值时,发现每次都是取最后一个notification intent里的值,然后网上查资料以后发现:问题主要出在PendingIntent.getActivity()的第二个参数,平常demo直接写0的,应用场景不同所以没出问题,实际上是通过该参数来区别不同的intent的,如果id相同,就会覆盖掉之前的intent了。所以总是获取到最后一个intent。

最后修改为:

PendingIntent pendingIntent = PendingIntent.getActivity(context, StringUtil.getIntUUID(),
intent, PendingIntent.FLAG_UPDATE_CURRENT);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: