Android Notification详解——响应notification事件

原创 2015年07月06日 19:50:59

一般来讲,点击一个notification后,都会打开一个Activity做为对点击事件的响应,这个Activity是之前在PendingIntent中设置好的。
经常玩Android手机的应该都有印象,在日历应用中,你新建一个提醒,当提醒通知收到后,你点击通知,会进入提醒的内容页面,如果这个时候按back键,会直接退出应用。
但是在Gmail的应用中,如果有一封新邮件到来,那么点击通知后,会进入到邮件的内容页面,等你看完邮件,点击back键,会退到邮件列表页面,再按back键,才会退出应用。

我们总结一下两种情况,假设我们的应用有两个Activity(ParentActivity、SubActivity),notification中设置打开的Activity为SubActivity。
那么第一种情况就是:
点击Notification ——>进入SubActivity ——> back键 ——> 退出应用
第二种情况:
点击Notification ——>进入SubActivity ——> back键 ——> 退到ParentActivity ——>back键 ——>退出应用

第一种情况比较简单,只需要在PendingIntent中指定Activity,不需要其他设置,Android默认的就这样。

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

但是在创建PendingIntent的时候需要注意参数PendingIntent.FLAG_CANCEL_CURRENT
这个标志位用来指示:如果当前的Activity和PendingIntent中设置的intent一样,那么久先取消当前的Activity,用PendingIntent中指定的Activity取代之。
另外,需要在Manifest中对指定的Activity设置属性

<activity android:name=".SubActivityl"
        android:launchMode="singleTask"
        android:taskAffinity=""
        android:excludeFromRecents="true">
</activity>

第二种情况稍微复杂点,因为如果只打开一个SubActivity,程序并没办法知道他的上一级Activity是谁,所以需要在点击Notification时打开一组Activity,但是我们并不需要一个个去调用startActivity方法,PendingIntent提供了个静态方法getActivities,里面可以设置一个Intent数组,用来指定一系列的Activity。
所以我们首先写一个函数创建一个Activity数组:

Intent[] makeIntentStack(Context context) {
    Intent[] intents = new Intent[2];
    intents[0] = Intent.makeRestartActivityTask(new ComponentName(context, com.example.notificationtest.MainActivity.class));
    intents[1] = new Intent(context,  com.example.notificationtest.SubActivity.class);
    return intents;
}

其中需要注意的是Intent.makeRestartActivityTask方法,这个方法用来创建activity栈的根activity
接下来,创建并显示Notification:
void showNotification(Intent intent) {
Notification notification = new Notification(
R.drawable.status_icon,
“Hello World ticker text”,
System.currentTimeMillis());

PendingIntent contentIntent = PendingIntent.getActivities(
        this,
        0,
        makeIntentStack(this), 
        PendingIntent.FLAG_CANCEL_CURRENT);
notification.setLatestEventInfo(
        this, 
        "Title",
        "Hey, shall we have a dinner tonight", 
        contentIntent);
notification.flags |= Notification.DEFAULT_ALL;

mNM.notify(1, notification);

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

notification几种点击事件

notification :以另一种UI界面形式展示出来,点击时可以对其应用做处理。 其常用的一些基本属性:setSmallIcon()设置图标   、setContentTitle()设置题目、se...
  • small_technical
  • small_technical
  • 2015年11月11日 20:01
  • 875

Android中Notification捕捉点击事件的替代方式

在处理程序中的通知消息时,一般都是用Notification类来处理,通过设置PendingIntent来处理点击通知之后的动作。与一般的Intent不同,PendingIntent表示即将要执行的动...
  • liuweiballack
  • liuweiballack
  • 2015年08月26日 20:08
  • 20956

Android 关于Notification 点击启动流程分析

最近在项目中做了一个关于推送消息,点击进入指定页面的一个功能,相信大家都遇到过这种情形。比如在集成(极光/友盟/小米/华为)推送的时候,当收到消息的时候如何处理点击逻辑呢?看图:上面是我简单画的一个分...
  • qq_16131393
  • qq_16131393
  • 2017年01月12日 17:26
  • 1615

Android开发(18)--NotiFication详解与使用

notification就是通知的意思,安卓中指通知栏,一般用在电话,短信,邮件,闹钟铃声,在手机的状态栏上就会出现一个小图标,提示用户处理这个快讯,这时手从上方滑动状态栏就可以展开并处理这个快讯。 ...
  • sgx425021234
  • sgx425021234
  • 2013年06月24日 20:06
  • 6899

Android Notification 的四种使用方式

实现通知步骤 一搬实现通知需要如下步骤: 1.获取 NotificationManager 实例管理通知; 2.实例 Notification 对象; 3.管理事件 Intent; 4.发送...
  • yxncl
  • yxncl
  • 2017年05月29日 11:13
  • 1713

android Notification分析——你可能遇到的各种问题

通知的使用网上有各种总结,csdn上也有很多总结非常到位,在此就不做重复的总结了,需要的同学可以自行搜索或者参考下面给出的链接。开始学习的时候认真的读了一些,现在功能开发完毕,把自己最近遇到的一些问题...
  • li411816761
  • li411816761
  • 2016年02月22日 11:01
  • 1298

Notification及在Notification里点击操作发送广播

Notification通知是在状态栏里显示的信息 一、Notification的实现:三步实现通知 1、定义通知: Notification mNotification = new Notifica...
  • ruanniu
  • ruanniu
  • 2013年09月25日 10:42
  • 5431

Android技巧小结之新旧版本Notification

本文转载至点击Notification即通知,用于在通知栏显示提示信息。 在较新的版本中(API level > 11),Notification类中的一些方法被Android声明deprecat...
  • ACM_TH
  • ACM_TH
  • 2016年05月02日 17:30
  • 754

Android的Notification的自定义布局按钮点击+点击按钮收回系统通知栏

一、Notification的按钮 相关代码: /** * 显示或者刷新通知 */ private void showNotification() { notification =...
  • lllkey
  • lllkey
  • 2016年04月26日 23:50
  • 2672

Notification通知栏设置及其点击响应

步骤: 1、新建好点击后跳转的类和布局(不需要跳转可跳过此步骤) 2、注册(养成良好习惯,每个活动都需要注册) 3、设置 NotificationManager获取哪个服务 4、设置Notificat...
  • Mr_Leixiansheng
  • Mr_Leixiansheng
  • 2016年12月13日 17:26
  • 2700
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Notification详解——响应notification事件
举报原因:
原因补充:

(最多只允许输入30个字)