`
wangzt_2008
  • 浏览: 46486 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

notification通过intent传递参数到activity

阅读更多

项目开发中遇到以下问题,需要在一个Activity中显示不同的消息类型,消息通过notification触发,代码如下:

 

            Intent intent = new Intent(context,
                    NotificationDetailsActivity.class);
            intent.putExtra(PNConstants.NOTIFICATION_ID, notificationId);
            intent.putExtra(PNConstants.NOTIFICATION_TITLE, title);
            intent.putExtra(PNConstants.NOTIFICATION_MESSAGE, message);
            intent.putExtra(PNConstants.NOTIFICATION_LOGIN_URI, loginUri);
            intent.putExtra(PNConstants.NOTIFICATION_URI, uri);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
            intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
            intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

            PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
                    intent, PendingIntent.FLAG_UPDATE_CURRENT);

            notification.setLatestEventInfo(context, title, message,
                    contentIntent);
            notificationManager.notify(notificationId, notification);

 如此,在接收多条不同类型的消息后,打开不同消息,进入消息详细页面NotificationDetailsActivity显示的始终是最后一条消息内容,而不是根据消息类型分类显示各分类的最后一条。

 

 

为解决此问题有两种方法,但是没有找到合理的解释,先记录如下,

 

方法1:为intent添加不同的Action

 

intent.setAction(""+System.currentTimeMillis());
 

方法2:PendingIntent.getActivity的第二个参数设为消息类型notificationId,

 

PendingIntent contentIntent = PendingIntent.getActivity(context, notificationId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
 

 

分享到:
评论

相关推荐

    应用源码之7.Intent初级学习.zip

    - 使用Parcelable接口封装复杂数据对象,以便通过Intent传递。 - 使用BroadcastReceiver处理全局广播Intent,实现跨组件通信。 - 使用PendingIntent将Intent包装成可延迟执行的对象,常用于AlarmManager或...

    Android代码-Intent切换.zip

    8. **启动服务(Start Service)**:除了用于Activity间的交互,Intent还可以用于启动和停止Service,传递参数到Service中。 9. **Broadcast Intent**:Intent还能用于广播事件,通过发送BroadcastIntent,可以将...

    android activity各种方式跳转 经典完整代码

    3. **带数据的Intent**:可以通过putExtra()方法传递数据到目标Activity,如字符串、整数、数组等。 ```java Intent intent = new Intent(this, TargetActivity.class); intent.putExtra("key", "value"); start...

    不同应用的activity进程间通信demo

    当涉及到不同应用之间的Activity通信时,我们通常会利用Android提供的Intent、Binder机制、ContentProvider、BroadcastReceiver等方法。以下将详细介绍这些通信方式及其应用。 一、Intent通信 Intent是Android中最...

    详解intent

    5. **启动 Activity**:通过 `startActivity(intent)` 或 `startActivityForResult(intent, requestCode)` 启动一个新的 Activity。 6. **发送广播**:使用 `sendBroadcast(intent)` 发送广播。 ##### B. Context ...

    Notification的实用技巧

    接着,我们可以通过`setContentIntent()`方法设置点击通知后的动作,通常是一个PendingIntent,可以启动一个新的Activity或服务。此外,还可以使用`addAction()`方法添加可操作的按钮,提供更多的用户选择。 ```...

    Android版本更新(Service下载 Notification进度条)

    使用`BroadcastReceiver`或`LocalBroadcastManager`来传递`Service`中的进度信息到`Activity`。每当下载进度改变时,更新`Notification`的进度条。 ```java // 在Service中发送广播 Intent progressIntent = new ...

    Notification案例详解

    现代应用常使用深链接让通知直接跳转到具体页面,这需要在PendingIntent中传递带有URI的Intent。 总之,Notification是Android应用与用户沟通的重要手段,理解并熟练运用各种特性和API,能够使你的应用通知更加丰富...

    Notification全面解析

    对于交互性,Notification可以包含可点击的意图(Intent),当用户点击通知时,可以通过`setContentIntent()`指定的PendingIntent启动相应的Activity或Service。此外,还可以设置撤销操作的意图,通过`...

    安卓之 (解决问题)PendingIntent和Intent的区别1

    在Android开发中,Intent和PendingIntent是两个非常重要的概念,它们在组件间的通信中起到关键作用。Intent可以理解为一种消息传递对象,用于在不同组件之间传递行为和数据,而PendingIntent则是Intent的一种封装,...

    ndroid Notification 用法源码.

    - 查看`Notification`的源码,我们可以看到`Notification`类是如何封装和传递通知信息的,以及如何与系统服务进行交互。 - `NotificationCompat.Builder`的源码揭示了如何构建一个复杂的`Notification`,包括如何...

    android_notification.rar

    在Android系统中,通知(Notification)是应用与用户交互的重要方式之一,即使用户不直接在应用界面操作,也能接收到应用的...通过阅读并理解提供的示例源码,可以深入学习到如何有效利用`Notification`这一关键特性。

    android notification

    你可以通过传递上下文和通知ID(一个整数,用于区分不同的通知)来初始化它。 ```java NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID); ``` 2. **设置通知的基本属性...

    notification 使用宝典

    - **Activity启动模式及Intent Flags与栈的关联分析**:了解Activity的启动模式如何影响Intent的传递和行为。 - **设计文档**:官方文档(http://developer.android.com/design/patterns/notifications.html)和译文...

    自定义通知声音

    创建自定义音频文件,将其添加到项目资源,使用NotificationCompat.Builder设置声音,构建并设置Intent和PendingIntent以实现点击通知后的行为,以及使用Intent传递数据。这些技术在Android开发中非常常见,能够帮助...

    你可能不知道的Notification用法

    Notification是Android系统中一个重要的组件,它用于在用户界面的顶部状态栏显示消息,即使应用在后台运行或者用户并未直接与应用交互时,也能向用户传递信息。在Android开发中,掌握Notification的正确使用方法至关...

    Android中pendingIntent与Intent的深入分析

    Intent主要用于启动或传递数据给另一个组件,如Activity、Service或BroadcastReceiver,而PendingIntent则是一种延迟执行的Intent,它允许其他应用或系统服务在特定条件下触发我们预先设定的操作。 Intent是Android...

    AndroidAuctionManagerImpIa

    Intent可以携带数据,因此在拍卖过程中,拍卖品的信息可以通过Intent在不同的Activity之间传递。 在拍卖流程中,用户可能会有以下操作: 1. **浏览拍卖列表**:这部分可能是一个ListView或者RecyclerView,显示所有...

    IntentText.rar

    在Android开发中,Intent是一个至关重要的组件,它用于在应用程序的不同组件之间传递消息,实现活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)以及内容提供者(ContentProvider)之间的交互。...

    PendingIntent 使用示例

    例如,你可以创建一个Intent,指定要启动的Activity,然后将这个Intent传递给PendingIntent的getActivity()或getService()方法。这样,当用户点击通知时,系统会使用这个PendingIntent来启动指定的组件。在描述的...

Global site tag (gtag.js) - Google Analytics