加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Android中通知的使用-----Notification分析

发布时间:2021-11-24 17:34:39 所属栏目:PHP教程 来源:互联网
导读:Notification 通知,是一种让你的应用程序在不使用Activity的情况下警示用户。它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有需要注意的事件发生的最好途径。 Notification 是由NotificationManager(系统服务)统一管理的。

Notification —— 通知,是一种让你的应用程序在不使用Activity的情况下警示用户。它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有需要注意的事件发生的最好途径。 Notification 是由NotificationManager(系统服务)统一管理的。
 
 
         一般来说, 一个Notification应该传送的消息包括:
 
                 1 、一个状态条图标        
 
                 2、在拉伸的状态栏窗口中显示额外的信息和启动一个Application的Intent
 
                 3、闪灯或LED
 
                 4、电话震动
 
 
 
         在状态栏(Status Bar)中,通知主要有两类(使用FLAG_标记,后面讲解到):
 
 
 
                 1、正在运行的事件
 
                 2、通知事件
 
 
 
     Notification图解如下:
 
 
 
               
 
             
 
 Notification类介绍:
         常量:
 
              //表示发送一个Notification的所携带的效果
 
             DEFAULT_ALL              使用默认字段
 
             DEFAULT_LIGHTS       默认闪光
 
             DEFAULT_SOUND      默认声音(uri,指向路径)
 
             DEFAULT_VIRATE       默认震动
 
 
 
          PS:以上的效果常量可以累加,即通过mNotifaction.defaults |=DEFAULT_SOUND   (有些效果只能在真机上才有,比如震动)
 
            //设置Flag位
 
            FLAG_AUTO_CANCEL           该通知能被状态栏的清除按钮给清除掉
 
            FLAG_NO_CLEAR                  该通知能被状态栏的清除按钮给清除掉
 
            FLAG_ONGOING_EVENT      通知放置在正在运行
 
 
 
    常用字段:
 
           contentIntent                 设置PendingIntent对象,点击时发送该Intent
 
           flags                                  设置flag位,例如FLAG_NO_CLEAR等
 
           defaults                             添加效果
 
           tickerText                        显示在状态栏中的文字
 
           when                               发送此通知的时间戳
 
           icon                                  设置图标
 
 
 
    常用方法介绍:
 
       void setLatestEventInfo(Context context , CharSequence contentTitle,CharSequence  contentText,PendingIntent contentIntent)   
 
           
 
        功能: 显示在拉伸状态栏中的Notification属性,点击后将发送PendingIntent对象
 
        参数: context             上下文环境
 
                      contentTitle      状态栏中的大标题
 
                      contentText      状态栏中的小标题
 
                      contentIntent    点击后将发送PendingIntent对象
 
 
 
        另外的就是Notification的几步不同构造方法了,其构造方法的参数含义如上,请参考SDK 。
 
 
 
    注意:当我们创造了一个Notification对象时,一定要为其设置setLatestEventInfo()方法,否则程序会报错 .
 
 
 
 
 
前面我们说过,NotificationManager是所有Notification的大管家,它的主要职责是加入/移除Notification。
 
NotificationManager类
   通过获取系统服务来获取该对象:
 
      NotificationManager mNotificationManager = (NotificationManager)getSystemServic(Context.NOTIFICATION_SERVICE) ;
 
 
 
  常用方法:
 
        public  void cancelAll()                  移除所有通知         (只是针对当前Context下的Notification)
 
        public  void cancel(int id)              移除标记为id的通知 (只是针对当前Context下的所有Notification)
 
        public  void notify(String tag ,int id, Notification notification)              将通知加入状态栏, 标签为tag,标��为id
 
        public  void notify(int id, Notification notification)                                 将通知加入状态栏,,标记为id
 
 
 
Demo如下:
 
简单的写一个Notification的类,对通知上面所讲解的知识有一定的认知 。
 
            
  
package com.qin.notification;  
  
import Android.app.Activity;  
import android.app.Notification;  
import android.app.NotificationManager;  
import android.app.PendingIntent;  
import android.content.Context;  
import android.content.Intent;  
import android.os.Bundle;  
import android.util.Log;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
  
public class MainActivity extends Activity implements OnClickListener  
{   
     private Button btnNotify;  
     private Button btnCancel;  
  
     private static int NOTIFICATION_ID = 0 ;  
  
      /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState)  
    {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        btnNotify = (Button) findViewById(R.id.btnNotify);  
        btnCancel = (Button) findViewById(R.id.btnCancel);  
        btnNotify.setOnClickListener(this) ;  
        btnCancel.setOnClickListener(this) ;  
   }  
  @Override  
  public void onClick(View v)  
  {  
      switch (v.getId())  
        {  
         case R.id.btnNotify:  
             showNotification();  
             break;  
         case R.id.btnCancel:  
             removeNotification();  
             break;  
         default:  
                break;  
  
       }  
  }  
    // 显示一个通知   
    private void showNotification()  
    {  
      // 创建一个通知   
      Notification mNotification = new Notification();  
  
      // 设置属性值   
       mNotification.icon = R.drawable.icon;  
      mNotification.tickerText = "NotificationTest";  
      mNotification.when = System.currentTimeMillis(); // 立即发生此通知   
  
       // 带参数的构造函数,属性值如上   
       // Notification mNotification = = new Notification(R.drawable.icon,"NotificationTest", System.currentTimeMillis()));   
  
      // 添加声音效果   
        mNotification.defaults |= Notification.DEFAULT_SOUND;  
  
       // 添加震动,由于在我的真机上会App发生异常,估计是Android2.2里的错误,略去,不添加   
        // mNotification.defaults |= Notification.DEFAULT_VIBRATE ;    
  
       //添加状态标志    
  
        //FLAG_AUTO_CANCEL          该通知能被状态栏的清除按钮给清除掉   
        //FLAG_NO_CLEAR                 该通知能被状态栏的清除按钮给清除掉   
        //FLAG_ONGOING_EVENT      通知放置在正在运行   
        //FLAG_INSISTENT                通知的音乐效果一直播放   
        mNotification.flags = Notification.FLAG_INSISTENT ;  
  
      // 设置setLatestEventInfo方法,如果不设置会App报错异常   
       NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
      //注册此通知    
       // 如果该NOTIFICATION_ID的通知已存在,不会重复添加,只是播放相应的效果(声音等)   
  
      mNotificationManager.notify(NOTIFICATION_ID, mNotification);  
  
  }  
  
     
  
   private void removeNotification()  
  
   {  
  
       NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
  
       // 取消的只是当前Context的Notification   
  
      mNotificationManager.cancel(NOTIFICATION_ID);  
   }  
  
 }  
  
}   

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读