上一篇讲了如何创建并显示一个notification,这一篇就总结下点击notification后,程序应该如何响应。
一般来讲,点击一个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);
}
分享到:
相关推荐
第十九讲:AndroidNotification的使用入门** - **链接**: [http://www.apkbus.com/android-725-1-1.html](http://www.apkbus.com/android-725-1-1.html) - **内容概述**: 这篇文章适合初学者阅读,它从零开始...
这个压缩包"安卓Android源码——绝对给力的源码,在线音乐播放器完整项目.rar"提供了完整的源代码,对于学习和理解Android应用程序开发,特别是音乐播放器的实现,具有极大的价值。以下是基于这个项目的一些关键知识...
《Android API详解——深入解析Android开发核心》 在Android应用开发领域,理解并熟练掌握Android API是至关重要的。"Android-API.rar"是一个压缩包,其中包含了一份名为"Android API.chm"的离线帮助文档,这是一份...
《Android开发详解——Java编程指南》 Android是Google推出的一款开源移动操作系统,广泛应用于智能手机、平板电脑以及智能电视等设备。对于开发者来说,掌握Android开发技术是进入移动应用领域的关键。本教程...
2.2 HelloAndroid详解 2.2.1 程序结构 2.2.2 代码分析 2.3 权限permission 2.4 LogCat日志调试 2.5 示例练习 2.5.1 登录界面 2.5.2 事件处理 2.6 本章小结 第二篇 Android开发关键组件 第3章 Activity(活动) 3.1 ...
【Android音乐播放器开发详解】 在移动设备领域,Android操作系统占据主导地位,而音乐播放器作为用户日常使用的重要应用之一,其开发技术自然备受关注。本文将深入探讨基于Android平台的音乐播放器——D-XXPlayer...
1. **Material Design**:Android L引入了全新的设计语言——Material Design,强调层次感、响应式交互和动态反馈,为用户带来更丰富的视觉体验。开发者需要掌握新的UI组件和动画机制来适应这一设计风格。 2. **ART...
《Android SDK 5.0(Lollipop)详解:聚焦android-21.jar》 在Android开发者的世界里,每个版本的SDK都承载着一系列新的特性和改进。本文将深入探讨Android 5.0(代号Lollipop)的重要组件——android-21.jar,它是...
《Android音乐播放器详解》 Android音乐播放器是Android平台上的一种应用程序,用于播放音频文件,如MP3、AAC等格式的音乐。这类应用通常具备播放、暂停、上一曲、下一曲、快进、倒退、音量控制、播放列表管理等...
- **介绍**:详细介绍如何在Android中创建应用程序以及其核心组件之一——活动(Activity)。 - **知识点**: - Activity生命周期管理 - Intent传递数据 - 多Activity之间的交互 - 启动模式与任务栈 - Activity...
这一章节深入探讨了Android应用程序的核心组件——活动(Activity)、片段(Fragment)和意图(Intent)。 - **活动(Activity)**:活动是Android应用中最基本的UI组件,相当于用户界面中的单个屏幕。本章将详细介绍如何...
《Android应用开发:构建跑步健身APP——MapDemo详解》 MapDemo-master.zip是一个包含Andriod应用程序项目的压缩包,主要用于跑步健身领域的应用开发。在这个项目中,开发者将学习如何利用Android SDK来创建一个...
项目以“catchme-master”命名,暗示了其核心理念——捕捉用户的需求并提供快速响应。通过这个项目,开发者可以学习到如何构建一个完整的Android应用,包括界面设计、数据管理、网络通信等多个方面。 二、技术栈 1...
《Androidpn消息推送系统——MyPushManager源码详解》 在移动应用开发中,消息推送是一项至关重要的功能,它能够实现在用户不主动打开应用的情况下,将信息及时推送给用户,提升用户体验。Androidpn(Android Push ...
《LaLaTaxi.zip——一款基于Java和Android的打车应用毕业设计详解》 LaLaTaxi.zip是一款专为Android平台设计的打车应用程序,它集成了Java编程语言的精髓,为用户提供便捷、高效的出行服务。这款应用不仅体现了...
《极光推送Golang SDK——DeanThompson-jpush-api-go-client开源项目详解》 在现代移动应用开发中,推送服务已经成为不可或缺的一部分,它能够实时地将消息推送到用户的设备上,提升用户活跃度和交互性。...
Android的Notification API允许我们在状态栏创建音乐播放控件,让用户体验无缝的音乐体验。同时,服务(Service)用于在后台运行音乐播放逻辑。 7. **UI动画与交互** 为了让应用更具吸引力,我们可以使用Android的...
【Java大项目源码——Java-Project1:推送服务源代码详解】 在Java开发领域,一个大型项目往往涉及多个模块和复杂的技术栈。本项目"Java-Project1"是一个以推送服务为核心的Java应用,旨在帮助开发者理解如何构建...