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

[java:nogutter] view plaincopy
  1. package cn.com.chenzheng_java;
  2. import android.app.Activity;
  3. import android.app.Notification;
  4. import android.app.NotificationManager;
  5. import android.app.PendingIntent;
  6. import android.content.Context;
  7. import android.content.Intent;
  8. import android.net.Uri;
  9. import android.os.Bundle;
  10. import android.provider.MediaStore.Audio;
  11. import android.view.View;
  12. import android.widget.Button;
  13. /***
  14. * @description 状态栏通知相关
  15. * @author chenzheng_java
  16. *
  17. */
  18. public class NotificationActivity extends Activity {
  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.notification);
  23. Button button = (Button) findViewById(R.id.button);
  24. button.setOnClickListener(new View.OnClickListener() {
  25. @Override
  26. public void onClick(View v) {
  27. addNotificaction();
  28. }
  29. });
  30. }
  31. /**
  32. * 添加一个notification
  33. */
  34. private void addNotificaction() {
  35. NotificationManager manager = (NotificationManager) this
  36. .getSystemService(Context.NOTIFICATION_SERVICE);
  37. // 创建一个Notification
  38. Notification notification = new Notification();
  39. // 设置显示在手机最上边的状态栏的图标
  40. notification.icon = R.drawable.excel;
  41. // 当当前的notification被放到状态栏上的时候,提示内容
  42. notification.tickerText = "注意了,我被扔到状态栏了";
  43. /***
  44. * notification.contentIntent:一个PendingIntent对象,当用户点击了状态栏上的图标时,该Intent会被触发
  45. * notification.contentView:我们可以不在状态栏放图标而是放一个view
  46. * notification.deleteIntent 当当前notification被移除时执行的intent
  47. * notification.vibrate 当手机震动时,震动周期设置
  48. */
  49. // 添加声音提示
  50. notification.defaults=Notification.DEFAULT_SOUND;
  51. // audioStreamType的值必须AudioManager中的值,代表着响铃的模式
  52. notification.audioStreamType= android.media.AudioManager.ADJUST_LOWER;
  53. //下边的两个方式可以添加音乐
  54. //notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");
  55. //notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
  56. Intent intent = new Intent(this, Notification2Activity.class);
  57. PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
  58. // 点击状态栏的图标出现的提示信息设置
  59. notification.setLatestEventInfo(this, "内容提示:", "我就是一个测试文件", pendingIntent);
  60. manager.notify(1, notification);
  61. }
  62. }

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

看到了吧,状态栏多出来一个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);

Notification 短信通知相关推荐

  1. Notification详解

    1. 创建notification Notification.Builder builder = new Notification.Builder(this).setSmallIcon(R.id.ic ...

  2. Notification的学习,4.0前后的差别,和在设置声音的时候获取资源的uri方法

    android 4.0 前后很多api都有了较大的差别,不多说现在学习下notification前后实现的差别,本文参考了 :http://my.oschina.net/ososchina/blog/ ...

  3. Android通知Notification使用全解析,看这篇就够了

    1.效果 2.简介 通知是 Android 在您的应用 UI 之外显示的消息,用于向用户提供提醒.来自其他人的通信或来自您的应用的其他及时信息.用户可以点击通知打开您的应用或直接从通知中执行操作. 2 ...

  4. Android中的通知Notification

    1.获得系统服务 notificationmanager=(NotificationManager) context.getSystemService(NOTIFICATION_SERVICE); 2 ...

  5. Android----------短信消息提醒(Notification)

    我将整个过程用函数封装起来,其中参数ord_id :为每个消息的标题,address:为每个消息在任务下拉框显示的内容 public void Notifi(String ord_id,String ...

  6. Notification Light

    FLAG_SHOW_LIGHTS //三色灯提醒 FLAG_ONGOING_EVENT //发起事件 FLAG_INSISTENT //振铃音将持续到Notification取消或Notificati ...

  7. Notification 使用详解

    录制了一个gif 图大家看看效果 由于手机厂商修改问题,这个显示可能存在差役,但是这个提示框都是会显示的,运行是在android 7 8 ,9 三个版本运行的都没有问题 下面开始介绍它的使用 Noti ...

  8. Notification和KVO有什么不同

    Notification是推送通知,我们可以建立一个通知中心,存放创建多个通知,在不同的地方在需要的时候push调用 和KVO不同的是,KVO是键值观察,只能观察一个值,这就是区别 转载于:https ...

  9. 点击Notification正确回调到之前已经放置在后台的Task中的对应Activity,而不是创建它的一个新实例...

    NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE ...

最新文章

  1. [Ext JS 4] 实战Chart 协调控制(单一的坐标,两个坐标)
  2. ASP.NET 2.0的编译模型
  3. 科大星云诗社动态20210509
  4. 科学计算机乱码,谁知道我的科学计算器这是怎么了?屏幕一堆乱码,什么都按不了...
  5. 网站漏洞检测针对区块链网站安全分析
  6. vue-quill-editor富文本 回显数据样式失效
  7. 华为机试HJ73:计算日期到天数转换
  8. 金蝶显示服务器不是有效,金蝶 服务器不是有效的 请重新设置
  9. 计算机程序配置不正确 请联系我们,电脑应用程序配置不正确怎么办
  10. 驳《寒门再难出贵子》——谁说寒门大学生没有春天!
  11. TCP协议下的recv函数
  12. Jitsi Meet的prosody模块报错Client disconnected: ssl handshake failed
  13. 免安装、免激活,绿色版的电脑软件下载网站
  14. 今年的第几天?(p16)模拟
  15. kali安装Netspeed
  16. 【多媒体】多媒体架构
  17. ngrok域名申请使用外网访问
  18. Linux数据库管理与应用
  19. 从零开始构建自己的WebGL3D引擎---思考与设计
  20. 学习基金(2)避坑-如何选择基金

热门文章

  1. base64图片转换file,并上传到阿里云
  2. 第1关:分支结构:是闰年吗
  3. 云豹源码php mysql_如何进行直播搭建,云豹直播源码搭建
  4. 大电流滑环的安装难不难
  5. 现代软件工程第三次作业-自我评价的改进
  6. NR PUCCH(二)PUCCH format 2/3/4 and interlaced RB
  7. 计算机基础——2.3 内存,主板和I/O
  8. IP、服务器、路由器配置
  9. Excel如何批量在数字后面添加单位
  10. shiro权限管理基本原理和实现的整理