android Notification简介

来源:互联网 发布:双色球一等奖概率算法 编辑:程序博客网 时间:2024/05/17 20:00

Notification可以理解为通知的意思一般用来显示广播信息 用Notification就必须要用到NotificationManager

想用Notification一般有三个步骤,如下所示

 一般获得系统级的服务NotificationManager。

              调用Context.getSystemService(NOTIFICATION_SERVICE)方法即可返回NotificationManager实例

 实例化Notification,并设置其属性

              用Notification构造函数 public Notification(int icon, CharSequence tickerText, long when)构造Notification实例 

 通过NotificationManager发通知就OK了

              NotificationManager有两个方法:notify()发出通知  cancel(...)取消通知


下面通过一个代码实例来介绍一下Notification

   先初始化notificationManager和notification两个成员变量

[java] view plaincopyprint?
  1. notificationManager = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);  
  2. notification = new Notification(R.drawable.touxiang,"信息",System.currentTimeMillis());  
  PS:Notification构造函数里传的参数就是这样显示的第一个参数是 图像,第二个是标题 :信息 ,第三个是系统时间 (见图一) 之所以在这说一下这个构造函数是想与下面的setLatestEventInfo(...)作个区别。

         

                                         (  图一   )                                                                                           (   图二    )

   布局就不贴了 是两个Button  看看发送按钮

[java] view plaincopyprint?
  1. sendButton.setOnClickListener(new OnClickListener()  
  2. {  
  3.       
  4.     @Override  
  5.     public void onClick(View v)  
  6.     {  
  7.         Intent intent = new Intent(NotificationActivity.this,NotificationActivity.class);  
  8.             PendingIntent pendingIntent = PendingIntent.getActivity(NotificationActivity.this0, intent, 0);  
  9.             notification.setLatestEventInfo(NotificationActivity.this"你的一条信息""来自张三的信息", pendingIntent);  
  10.             notificationManager.notify(ID,notification);  
  11.             notificationManager.notify(ID+1, notification);  
  12.     }  
  13. })  

      setLatestEventInfo(...)里面所传的参数的效果图:(见图二)通知里面有两条完全一样的消息,是的 你没看错,这是因为我用notificationManager  notify(通知)了两次 而且ID不同,ID是int型是通知信息的标示符。虽然我上面两条信息是一模一样的,但由于ID的不同 , 所以Android还是会显示两条信息。
          在此说一下参数pendingIntent的在setLatestEventInfo里所扮演的角色,是啥子意思呢?pendingIntent可以在另外的地方执行,不是立即意图。当用户点击扩展通知的时候 pendingIntent意图才开始执行,例如图二 我点击其中一个消息后,立马就进入另外一个Activity...
       正如上面看到的那样,除了为notification设置图标,标题外还可以设置提示音,震动,闪光灯 详情请见我转的一片文章Notification使用详解.....

[java] view plaincopyprint?
  1. package com.study.android;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.Notification;  
  5. import android.app.NotificationManager;  
  6. import android.app.PendingIntent;  
  7. import android.content.Context;  
  8. import android.content.Intent;  
  9. import android.os.Bundle;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.widget.Button;  
  13.   
  14. public class MainActivity extends Activity {  
  15.     private Button startBtn;  
  16.     private Button cancelBtn;  
  17.     private static final int HELLO_ID = 1;  
  18.     NotificationManager mNotificationManager;  
  19.     Notification mNotification;  
  20.     /** Called when the activity is first created. */  
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.main);  
  25.           
  26.         startBtn = (Button)findViewById(R.id.startBtn);  
  27.         cancelBtn = (Button)findViewById(R.id.cancelBtn);  
  28.           
  29.         // ① 获取NotificationManager的引用   
  30.         String ns = Context.NOTIFICATION_SERVICE;  
  31.         mNotificationManager = (NotificationManager)this.getSystemService(ns);  
  32.           
  33.           
  34.         // ② 初始化Notification  
  35.         int icon = R.drawable.ic_launcher;  
  36.         CharSequence tickerText = "Hello";  
  37.         long when = System.currentTimeMillis();  
  38.         mNotification = new Notification(icon,tickerText,when);  
  39.         mNotification.defaults = Notification.DEFAULT_ALL;  
  40.         mNotification.flags |= Notification.FLAG_NO_CLEAR;  
  41.         mNotification.flags |= Notification.FLAG_SHOW_LIGHTS;  
  42.         // ③ 定义notification的消息 和 PendingIntent  
  43.         Context context = this;  
  44.         CharSequence contentTitle ="My notification";  
  45.         CharSequence contentText = "Hello World";  
  46.         Intent notificationIntent = new Intent(this,MainActivity.class);  
  47.         PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent,0 );  
  48.         mNotification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);  
  49.           
  50.         // ④ 把封装好的notification传入NotificationManager  
  51.           
  52.           
  53.         // 开启通知  
  54.         startBtn.setOnClickListener(new OnClickListener() {  
  55.               
  56.             @Override  
  57.             public void onClick(View v) {  
  58.                 mNotificationManager.notify(HELLO_ID,mNotification);  
  59.                   
  60.             }  
  61.         });  
  62.           
  63.         // 取消通知  
  64.         cancelBtn.setOnClickListener(new OnClickListener() {  
  65.               
  66.             @Override  
  67.             public void onClick(View v) {  
  68.                 mNotificationManager.cancel(HELLO_ID);  
  69.                   
  70.             }  
  71.         });  
  72.     }  
  73. }  

代码中有创建Notification步骤,详情可以看一下。
0 0
原创粉丝点击