Notification是显示在手机状态的通知——手机状态栏位于手机屏幕的最上方,那里一般显示了手机当前的网络状态、时间等。Notification所代表的是一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notification。

提示:NotificationManager是一个重要的系统服务,该API位于android的应用程序框架层,应用程序可通过NotificationManager向系统发送全局通知。

Android 3.0增加Notification.Builder类,通过该类允许开发者更轻松的创建Notification对象。Notification.Builder提供了如下常用方法。

  • setDefaults():设置通知LED灯、音乐、振动等。
  • setAutoCancel():设置点击通知后,状态栏自动删除通知。
  • setContentTitle():方法设置通知标题。
  • setContentText():设置通知内容。
  • setSmallIcon():未通知设置图标。
  • setLargeIcon():未通知设置大图标。
  • setTick():设置通知在状态栏的提示文本。
  • setContentIntent():设置点击通知后将要启动的程序组件对应的PendingIntent。

发送Notification很简单,按如下步骤进行即可。

  1. 调用getSystemService(NOTFICATION_SERVICE)方法获取系统的NotificationManager服务。
  2. 通过构造器创建一个Notification对象。
  3. 为Notification设置各种属性。
  4. 通过NotificationManager发送Notification。

  实例:加薪通知    

本实例示范了如何通过NotificationManager来发送、取消Notification,本实例的界面很简单,只是包含两个普通按钮,分别用于发送Notification和取消Notification。

本示例的界面布局文件如下:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:orientation="horizontal"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:gravity="center_horizontal"
  6. >
  7. <Button android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:text="发送Notification"
  10. android:onClick="send"/>
  11. <Button android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:text="删除Notification"
  14. android:onClick="del"/>
  15.  
  16. </LinearLayout>

该Activity程序的后台代码文件如下:

  1. package org.crazyit.helloworld;
  2.  
  3. import android.net.Uri;
  4. import android.os.Bundle;
  5. import android.app.Activity;
  6. import android.app.Notification;
  7. import android.app.Notification.Builder;
  8. import android.app.NotificationManager;
  9. import android.app.PendingIntent;
  10. import android.content.Intent;
  11. import android.view.Menu;
  12. import android.view.View;
  13.  
  14. public class NotificationTest extends Activity {
  15.  
  16. static final int NOTIFICATION_ID =0x123;
  17. NotificationManager nm;
  18.  
  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.notification_test);
  23. //获取系统的NotificationManager服务
  24. nm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
  25. }
  26. //为发送通知的按钮的点击事件定义事件处理方法
  27. public void send(View source)
  28. {
  29. //创建一个启动其他Activity的Intent
  30. Intent intent=new Intent(NotificationTest.this,OtherActivity.class);
  31. PendingIntent pi=PendingIntent.getActivity(NotificationTest.this,
  32. 0, intent, 0);
  33. Notification notify=new Notification.Builder(this)
  34. //设置打开该通知,该通知自动消失
  35. .setAutoCancel(true)
  36. //设置显示在状态栏的通知提示信息
  37. .setTicker("有新消息")
  38. //设置通知的图标
  39. .setSmallIcon(R.drawable.notify)
  40. //设置通知内同的标题
  41. .setContentTitle("一条新通知")
  42. .setContentText("恭喜您,您加薪了,工资增加20%!")
  43. //设置系统默认的声音、震动
  44. //.setDefaults(Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE)
  45. //设置通知的自定义声音
  46. .setSound(Uri.parse("android.resource://org.craztit.ui"+R.raw.msg))
  47. .setWhen(System.currentTimeMillis())
  48. //设置盖通知将要启动程序的Intent
  49. .setContentIntent(pi)
  50. .build();
  51. //发送通知
  52. nm.notify(NOTIFICATION_ID,notify);
  53. }
  54. //为删除通知的按钮的点击事件定义事件处理方法
  55. public void del(View v)
  56. {
  57. //取消通知
  58. nm.cancel(NOTIFICATION_ID);
  59. }
  60.  
  61. @Override
  62. public boolean onCreateOptionsMenu(Menu menu) {
  63. // Inflate the menu; this adds items to the action bar if it is present.
  64. getMenuInflater().inflate(R.menu.notification_test, menu);
  65. return true;
  66. }
  67.  
  68. }

上面的程序中粗体字代码用于为Notification设置各种属性,包括Notification的图标、标题、发送时间等。除此之外,上面的程序还通过setDefaults()方法为Notification设置了声音提示、振动提示、闪光灯等。该属性支持如下属性值。

  • DEFAULT_SOUND:设置使用默认声音。
  • DEFAULT_VIBRATE:设置默认振动。
  • DEFAULT_LIGHTS:设置使用默认闪光灯。
  • ALL:设置使用默认声音、振动、闪光灯。

如果不想使用默认设置,也可以使用如下代码:

  1. //设置自定义声音
  2. setSound("file///sdcard/click.mp3");
  3. //设置自定义振动
  4. setVibrate(new long[]{0,50,100,150});

运行上面的程序,单击程序中“发送Notification”按钮,将可以看到手机屏幕上方出现了一个Notification。将状态栏向下拖动,将可以看到Notification的详情,

上图中Notification还关联了一个Activity:OtherActivity,因此当用户单击“通知”时即可启动OtherActivity——OtherActivity是一个十分简单的程序,故此处不再介绍。

由于上面的程序指定了该Notification要启动OtherActivity,因此一定不要忘记在AndroidManifest.xml文件中声明该Activity。而且上面的程序中还需要访问系统闪光灯、振动器,这也需要在AndroidManifest.xml文件中声明权限。也就是增加如下代码片段即可。

  1. <!-- 添加操作闪光灯的权限 -->
  2. <uses-permission android:name="android.permission.FLASHLIGHT" />
  3. <!-- 添加操作振动器的权限 -->
  4. <uses-permission android:name="android.permission.VIBRATE" />
  5.  
  6. <activity
  7. android:name="org.crazyit.helloworld.OtherActivity"
  8. android:label="@string/title_activity_other" >
  9. </activity>

Notification的功能与用法的更多相关文章

  1. 2.6.2 Notification的功能与用法

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...

  2. Notification的功能和用法 加薪通知

    实现通知栏消息的生成和消除 MainActivity.java        public class MainActivity extends Activity   {       static f ...

  3. Android 自学之画廊视图(Gallery)功能和用法

    Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显 ...

  4. 配置 SQL Server Email 发送以及 Job 的 Notification通知功能

    配置 SQL Server Email 发送以及 Job 的 Notification通知功能 在与数据库相关的项目中, 比如像数据库维护, 性能警报, 程序出错警报或通知都会使用到在 SQL Ser ...

  5. 搜索框(SearchView)的功能与用法

    SearchView是搜索框组件,它可以让用户在文本框内输入汉字,并允许通过监听器监控用户输入,当用户用户输入完成后提交搜索按钮时,也通过监听器执行实际的搜索. 使用SearchView时可以使用如下 ...

  6. 数值选择器(NumberPicker)的功能与用法

    数值选择器用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值.使用该组件常用如下三个方法. setMinValue(int minVal):设置该组件支持的最小值. setMax ...

  7. 日历视图(CalendarView)组件的功能和用法

    日历视图(CalendarView)可用于显示和选择日期,用户既可选择一个日期,也可通过触摸来滚动日历.如果希望监控该组件的日历改变,可调用CalendarView的setOnDateChangeLi ...

  8. 星级评分条(RatingBar)的功能和用法

    星级评分条与拖动条有相同的父类:AbsSeekBar,因此它们十分相似.实际上星级评分条与拖动条的用法.功能都十分接近:它们都是允许用户通过拖动条来改变进度.RatingBar与SeekBar最大区别 ...

  9. 拖动条(SeekBar)的功能和用法

    拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程序,而拖动条则通过滑块的位置来标识数值——而且拖动条允许用户拖动滑块来改变值,因而拖动条通常用于对系统的某种数值进行调节,比如调节音量等 ...

随机推荐

  1. Android开源项目收集

    软件名:gaeproxy软件作用:Android手机配置GoAgentFQ.项目地址:https://github.com/madeye/gaeproxy.git 软件名:ProxyDroid软件作用 ...

  2. 适用于kali linux的远程桌面开启方法(从windows xp 远程登录到kali linux )

    为了解决Windows远程桌面访问Ubuntu 12.04 之一 中提到的VNC远程桌面的缺点(见http://www.linuxidc.com/Linux/2012-07/64801.htm),我们 ...

  3. uboot1.1.6之NOR FLASH 出现的问题解决方法

    U-BOOT移植,structure has no member named `CAMDIVN speed.c: In function `get_HCLK':speed.c:114: error: ...

  4. Android复习--广播

    广播有两种方式,一种静态广播,一种动态广播. 静态广播-->静态广播接收器在配置文件里面注册. 动态广播-->而动态广播接收器在代码里面注册. 广播的发送: Context.sendBro ...

  5. HDU 3201 Build a Fence

    水题 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> us ...

  6. docker k8s 1.3.8 + flannel

    docker k8s + flannel kubernetes 是谷歌开源的 docker 集群管理解决方案. 项目地址: http://kubernetes.io/ 测试环境: node-1: 10 ...

  7. WebDriver(Selenium2) 处理可能存在的JS弹出框

    http://uniquepig.iteye.com/blog/1703103 在自动化测试过程中,有些情况下我们会遇到一些潜在的Javascript弹出框.(即某些条件下才会出现,不是固定出现),然 ...

  8. 编译内核启用iptables及netfilter

    在Network Packet Filtering Framework(Netfilter)一节中还有两个额外的配置节——Core Netfilter Configuration(核心Netfilte ...

  9. JQuery操作DOM对象

    1.追加节点( 儿子关系) append()     $("已有元素").append("动态添加元素");  在已有元素的内部的后面追加一个元素 append ...

  10. Java 8新特性探究(八)精简的JRE详解

    http://www.importnew.com/14926.html     首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 Java小组 工具资源 - 导航条 - 首页 所有文章 资讯 ...