第88章、系统服务之NOTIFICATION_SERVICE服务(从零开始学Android)

Notification通知将一个图标(包含一条可选的提示文本信息)填加到系统的状态栏(通常来讲,Android手机的状态栏是在顶部,非底部,要注意噢)中,并将一条展开信息添加到通知窗口中。当用户选中展开信息时,Android将执行一个此通知已定义的意图Intent(一般用于弹出一个Activity)。你还能够对通知进行配置,用设备提供的声音、振动、闪光来提醒用户。html

  当后台服务(Service)须要对某个事件发出提醒而且须要用户响应时,状态栏通知就能发挥做用了。后台服务历来不会启动Activity来接收用户的交互,取而代之的是应该建立一个状态栏通知,在用户点选后再由通知来启动Activity。java

  Activity或者Service都能初始化一个状态栏通知。可由于Activity只有在活动状态并得到焦点时才能执行操做,因此在实际开发中使用Service来建立状态栏通知居多。这样,即便用户正在使用其余程序或者设备已经休眠时,仍然能够从后台建立通知。要建立一个通知,须用到两个类:Notification类和NotificationManager类。android

  NotificationManager是一个Android系统服务,用于管理和运行全部通知。NotificationManager不能被实例化,为了把Notification传给它,你能够用getSystemService()方法获取一个NotificationManager的引用。在须要通知用户时再调用notify()方法将Notification对象传给它。编程

   建立Notivication通知步骤:app

  (1)获取NotificationManager的引用ide

[java] view plaincopy布局

  1. NotificationManager notificationManager=(NotificationManager)  ui

  2.                     super.getSystemService(Context.NOTIFICATION_SERVICE);  this

  (2)实例化Notificationspa

[java] view plaincopy

  1.        Notification notification=new Notification(  

  2. R.drawable.ic_launcher,  

  3. "Notification消息提示!",  

  4. System.currentTimeMillis());  

  (3)指定通知的展开信息和Intent

[java] view plaincopy

  1.        PendingIntent intent=PendingIntent.getActivity(  

  2. this,   

  3. 0,   

  4. super.getIntent(),   

  5. PendingIntent.FLAG_UPDATE_CURRENT);  

  6.   

  7. tification.setLatestEventInfo(  

  8. this,   

  9. "跟我学Android",  

  10. "跟我学编程:www.genwoxue.com",  

  11. intent);  



  (4)将Notification对象传给NotificationManager

[java] view plaincopy

  1.        notificationManager.notify(  

  2. "Genwoxue",  

  3. R.drawable.ic_launcher,  

  4. notification);  

  若是想要发送状态栏通知,经过notify(int, Notification)传递Notification对象给NotificationManager便可。第一个参数是Notification 的惟一ID,第二个参数是Notification对象。ID在整个应用程序范围内惟一标识Notification。应用程序可能管理着多种不一样的通知,在用户经过各自定义的Intent返回应用程序时必须能选择正确的动做执行之,所以上述参数是必需的。


1、设计界面

  一、布局文件

  打开res/layout/activity_main.xml文件。
  输入如下代码:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout   

  3.     xmlns:android="http://schemas.android.com/apk/res/android"  

  4.     android:layout_width="match_parent"  

  5.     android:layout_height="match_parent"  

  6.     android:orientation="vertical" >  

  7.   

  8.     <TextView  

  9.         android:id="@+id/notifi"  

  10.         android:layout_width="wrap_content"  

  11.         android:layout_height="wrap_content"  

  12.         android:text="Notification通知将一个图标(包含一条可选的提示文本信息)填加到系统的状态栏(通常来讲,Android手机的状态栏是在顶部,非底部,要注意噢)中,并将一条展开信息添加到通知窗口中。当用户选中展开信息时,Android将执行一个此通知已定义的意图Intent(一般用于弹出一个Activity)。你还能够对通知进行配置,用设备提供的声音、振动、闪光来提醒用户。  

  13. />  

  14.   

  15. </LinearLayout>  


2、程序文件

  打开“src/com.genwoxue.notification/MainActivity.java”文件。
  而后输入如下代码:

[java] view plaincopy

  1. package com.genwoxue.notification;  

  2.   

  3.   

  4. import android.os.Bundle;  

  5. import android.app.Activity;  

  6. import android.app.Notification;  

  7. import android.app.NotificationManager;  

  8. import android.app.PendingIntent;  

  9. import android.content.Context;  

  10.   

  11. public class MainActivity extends Activity {  

  12.   

  13.       

  14.       

  15.     @Override  

  16.     protected void onCreate(Bundle savedInstanceState) {  

  17.         super.onCreate(savedInstanceState);  

  18.         setContentView(R.layout.activity_main);  

  19.           

  20.         NotificationManager notificationManager=(NotificationManager)super.getSystemService(Context.NOTIFICATION_SERVICE);  

  21.         Notification notification=new Notification(  

  22.                 R.drawable.ic_launcher,  

  23.                 "Notification消息提示!",  

  24.                 System.currentTimeMillis());  

  25.           

  26.         PendingIntent intent=PendingIntent.getActivity(  

  27.                 this,   

  28.                 0,   

  29.                 super.getIntent(),   

  30.                 PendingIntent.FLAG_UPDATE_CURRENT);  

  31.           

  32.         notification.setLatestEventInfo(  

  33.                 this,   

  34.                 "跟我学Android",  

  35.                 "跟我学编程:www.genwoxue.com",  

  36.                 intent);  

  37.           

  38.         notificationManager.notify(  

  39.                 "Genwoxue",  

  40.                 R.drawable.ic_launcher,  

  41.                 notification);    

  42.     }  

  43. }  

3、配置文件

  没有特殊权限要求,使用默认“AndroidManifest.xml”配置文件便可。

4、运行结果

   

  

 
参考文章:

  android Notification 的使用

  Android中Notification服务开发

相关文章
相关标签/搜索