我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的。

package cn.com.chenzheng_java;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.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore.Audio;
import android.view.View;
import android.widget.Button;/**** @description 状态栏通知相关* @author chenzheng_java* */
public class NotificationActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.notification);Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {addNotificaction();}});}/*** 添加一个notification*/private void addNotificaction() {NotificationManager manager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);// 创建一个NotificationNotification notification = new Notification();// 设置显示在手机最上边的状态栏的图标notification.icon = R.drawable.excel;// 当当前的notification被放到状态栏上的时候,提示内容notification.tickerText = "注意了,我被扔到状态栏了";/**** notification.contentIntent:一个PendingIntent对象,当用户点击了状态栏上的图标时,该Intent会被触发* notification.contentView:我们可以不在状态栏放图标而是放一个view* notification.deleteIntent 当当前notification被移除时执行的intent* notification.vibrate 当手机震动时,震动周期设置*/// 添加声音提示notification.defaults=Notification.DEFAULT_SOUND;// audioStreamType的值必须AudioManager中的值,代表着响铃的模式notification.audioStreamType= android.media.AudioManager.ADJUST_LOWER;//下边的两个方式可以添加音乐//notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3"); //notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6"); Intent intent = new Intent(this, Notification2Activity.class);PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);// 点击状态栏的图标出现的提示信息设置notification.setLatestEventInfo(this, "内容提示:", "我就是一个测试文件", pendingIntent);manager.notify(1, notification);}}

点击按钮时候,状态栏会显示:

看到了吧,状态栏多出来一个excel图标,当我按住图标不放,往下拖动的时候,出来了这个页面

然后,当我们点击这个对话框之后,就会触发intent,跳转到Notification2Activity.java这个activity。

----------------------------------------------------------------------------------------

注意,NotificationManager里的notify(id,notification)中的id是用来唯一标识我们当前的这个notification的标识符,我们通过cancel方法删除通知时,传递的就是这个值。可能读者在看很多文档的时候,发现这个地方指定了一个莫名奇妙的值,例如R.drawable.icon,很多朋友就纳闷了,为什么这里要指定一个图片呢。这里笔者就介绍下,为什么呢?

答案其实很简单,我们都知道,我们这里对参数的唯一要求就是,这个id要和notify方法中的一致,并且是唯一;只要满足了这两项,其他的都无所谓。notify和cancel里一致我们作为开发者,太好控制了,但是唯一呢,我们还真不好说,于是这里就有些人动小脑筋了,很巧妙的用了我们系统中的图片资源或者其他资源的索引ID,我们都知道,这些值肯定都是唯一的!

------------------------------------------------------------------------------------------

下面是从网上找的一些资料:

如果要添加一个Notification,可以按照以下几个步骤

1:获取NotificationManager:

NotificationManager m_NotificationManager=(NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);

2:定义一个Notification:

Notification  m_Notification=new Notification();

3:设置Notification的各种属性:

//设置通知在状态栏显示的图标
m_Notification.icon=R.drawable.icon;
                
 //当我们点击通知时显示的内容
m_Notification.tickerText="Button1 通知内容.....";
                                
通知时发出的默认声音
m_Notification.defaults=Notification.DEFAULT_SOUND;

//设置通知显示的参数

Intent   m_Intent=new Intent(NotificationDemo.this,DesActivity.class);       
PendingIntent m_PendingIntent=PendingIntent.getActivity(NotificationDemo.this, 0, m_Intent, 0);

m_Notification.setLatestEventInfo(NotificationDemo.this, "Button1", "Button1通知",m_PendingIntent );

//这个可以理解为开始执行这个通知
m_NotificationManager.notify(0,m_Notification);

4:既然可以增加同样我们也可以删除。当然是只是删除你自己增加的。

m_NotificationManager.cancel(0);

这里的0是一个ID号码,和notify第一个参数0一样。

这也就完成了,添加删除工作。

------------------------------------------------------------------------------------------------------

NoticificationManager很容易可以放在状态栏,也很容易实现从statusbar进入程序 中, 
NoticificationManager中通过intent执行此程序的activity就可以了

NoticificationManager状态栏操作

NotificationManager(通知管理器): 
NotificationManager负责通知用户事件的发生. 
NotificationManager有三个公共方法: 
1. cancel(int id) 取消以前显示的一个通知.假如是一个短暂的通知,试图将隐藏,假如是一个持久的通知,将从状态条中移走. 
2. cancelAll() 取消以前显示的所有通知. 
3. notify(int id,  Notification notification) 把通知持久的发送到状态条上.

//初始化NotificationManager: 
NotificationManager nm = 
      (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

Notification代表着一个通知. 
Notification的属性: 
audioStreamType 当声音响起时,所用的音频流的类型 
contentIntent 当通知条目被点击,就执行这个被设置的Intent. 
contentView 当通知被显示在状态条上的时候,同时这个被设置的视图被显示. 
defaults 指定哪个值要被设置成默认的. 
deleteIntent 当用户点击"Clear All Notifications"按钮区删除所有的通知的时候,这个被设置的Intent被执行. 
icon 状态条所用的图片. 
iconLevel 假如状态条的图片有几个级别,就设置这里. 
ledARGB LED灯的颜色. 
ledOffMS LED关闭时的闪光时间(以毫秒计算) 
ledOnMS LED开始时的闪光时间(以毫秒计算) 
number 这个通知代表事件的号码 
sound 通知的声音 
tickerText 通知被显示在状态条时,所显示的信息 
vibrate 振动模式. 
when 通知的时间戳.

将Notification发送到状态条上: 
Notification notification = new Notification(); 
Notification的设置过程…….. 
nm.notify(0, notification);   //发送到状态条上

------------------------------------------------------------------------------------------------------------

Notification提供了丰富的手机提示方式:

a)在状态栏(Status Bar)显示的通知文本提示,如:

notification.tickerText = "hello";

b)发出提示音,如:

notification.defaults = Notification.DEFAULT_SOUND;

notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");

notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");

c)手机振动,如:

notification.defaults = Notification.DEFAULT_VIBRATE;

long[] vibrate = {0,100,200,300};

notification.vibrate = vibrate;

d)LED灯闪烁,如:

notification.defaults = Notification.DEFAULT_LIGHTS;

notification.ledARGB = 0xff00ff00;

notification.ledOnMS = 300;

notification.ledOffMS = 1000;

notification.flags = Notification.FLAG_SHOW_LIGHTS;

4)发送通知:

private static final int ID_NOTIFICATION = 1;

mNotificationManager.notify(ID_NOTIFICATION, notification);

转自:http://blog.csdn.net/chenzheng_java/article/details/6249357

转载于:https://www.cnblogs.com/welcoming/p/4120879.html

android之Notification通知相关推荐

  1. Android的notification通知

    概括: Android使用notification实现消息提醒,提供通知栏和通知抽屉查看通知和通知详情,Android的notification机制应用非常广泛,是指在应用程序之外显示的消息,布局由系 ...

  2. Android Train—notification通知

    Notification extends Object implements Parcelable java.lang.Object ↳ android.app.Notification Public ...

  3. Android中notification通知的Demo——震动,铃声,Led灯闪烁

    这里要注意几点: 1. notification的各种方法及参数的应用 2. 旧版本的SDK和新版本的SDK消息推送的写法是有些不一样的   1. notification的各种方法及参数的应用  ( ...

  4. 四十一、Android Notification通知详解

    根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面把notification放在通知栏里,再此显示时 ...

  5. Android Notification通知详解

    Android Notification通知详解 Notification: (一).简介: 显示在手机状态栏的通知.Notification所代表的是一种具有全局效果的通知,程序一般通过Notifi ...

  6. Android篇 --Notification(消息通知)

    Android篇 --Notification(消息通知) 消息通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望用户发出一些提示信息,而该应用又不在前台运 ...

  7. Android Notification通知详细解释

    Android Notification通知具体解释 Notification: (一).简单介绍: 显示在手机状态栏的通知. Notification所代表的是一种具有全局效果的通知,程序一般通过N ...

  8. Android学习|控件——Notification通知

    Android学习|控件--Notification通知 一.前提 二.两个对象的的构建 1.创建NotificationManager 2.使用Builder构造器来创建Notification 2 ...

  9. Android学习日记 Notification 通知

    Android学习日记 Notification 通知 文章目录 Android学习日记 Notification 通知 前言 使用步骤 总结 前言 下拉状态栏显示的通知功能 使用步骤 代码如下: p ...

最新文章

  1. github/python/ show me the code 25题(一)
  2. 802.11b协议的一些介绍和说明
  3. OpenCASCADE:Modeling Algorithms模块几何工具之投影
  4. plsql导出表结构到excel_plsql 将表结构导出到excel中的两种方式
  5. 创建一个Java :: Geci生成器
  6. java 左边补0_java 数字左补齐0
  7. mysql 定期备份策略,MySQL--3--mysqldump备份策略
  8. 简明Github使用教程(桌面客户端与网页版)
  9. java并发编程(7)-- 线程 自旋锁
  10. 点云配准1:配准基础及icp算法
  11. 403. 青蛙过河--(每日一难phase2--day10)
  12. 第四篇Scrum冲刺博客
  13. MEION:Costas环 环路滤波器参数设置程序
  14. 表面缺陷检测的意义及现状
  15. java 中的网络编程(Socket、TCP三次握手四次挥手、TCP/UDP/URL)
  16. 从红队视角看AWD攻击
  17. 聚合SDK广告平台相比传统广告平台的优势
  18. ospf的rid选举
  19. python微信好友_python 获取微信好友列表的方法(微信web)
  20. iPhone、iPad、Android UI常用设计尺寸

热门文章

  1. Linux17-磁盘分区、文件系统、逻辑卷管理LVM
  2. 如何使用React.js和Heroku快速实现从想法到URL的转变
  3. 使用Fiddler进行HTTP流量分析
  4. 加了好友怎么还掉血_微信聊天窗口出现风险提醒,无法添加好友解决办法
  5. CSS改变nth-child()和nth-last-child()的参数灵活选择元素编号
  6. leetcode--删除排序链表中的重复元素--python
  7. 详解数组中的reduce方法
  8. Python创建和访问字典
  9. 构建安全的 ASP.NET 应用程序
  10. C#:将另一个应用程序的主窗口移至屏幕最前