Android Notification 基础工作学习 2010-06-27 17:42:36 阅读869 评论0 字号:大中小 订阅
在Android中,基本的Notification就是有事件发生的时候在屏幕顶端的Notification bar上显示一个图标。然后拉下Notification bar,点击Notification的项目,会调用相应的程序做处理。比如有新短信,就会出现短信的图标,拉下Notification bar,点击图标会调用短信查看程序。



我们先看一下Notification的Sample Code,然后逐行做解说,大致能了解它的基本构成。





import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;...private void showNotification(Message msg, int id) { NotificationManager notiManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.notiicon, msg .getTitle(), System.currentTimeMillis()); notification.flags = Notification.FLAG_AUTO_CANCEL; Intent intent = new Intent(this, MainActivity.class); Bundle bundle = new Bundle(); bundle.putString("info", msg.getInfo()); intent.putExtras(bundle); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent contentIntent = PendingIntent.getActivity(this, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); notification.setLatestEventInfo(this, msg.getTitle(), msg.getInfo(), contentIntent); notiManager.notify(id, notification); }



首先导入三个类,Notification,NotificationManager,PendingIntent。 值得一提的是PendingIntent,它可以看做是Intent这封信的一个信封。PendingIntent基本上是Intent的包装和描述,对象收到PendingIntent后,可以得到其中的Intent再发出去。



NotificationManager notiManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);上面这一句,从系统中获得Notification服务,getSystemService()就是这么用,来获得系统服务的。



Notification notification = new Notification(R.drawable.notiicon, msg .getTitle(), System.currentTimeMillis()); notification.flags = Notification.FLAG_AUTO_CANCEL;

然后是构造一个Notification,包括三个属性,图标,图标后面的文字,以及Notification时间部分显示出来的时间,通常使用当前时间。FLAG_AUTO_CANCEL说明Notification点击一次就消失。



Intent intent = new Intent(this, MainActivity.class); Bundle bundle = new Bundle(); bundle.putString("info", msg.getInfo()); intent.putExtras(bundle); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

上面这部分Code,构造一个Intent,并且放进去一条信息。 FLAG_ACTIVITY_CLEAR_TOP, FLAG_ACTIVITY_NEW_TASK者两个FLAG表示优先寻找已经打开的应用,如果应用没有打开那么启动它。



PendingIntent contentIntent = PendingIntent.getActivity(this, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);这一句代码把Intent包装在PendingIntent里,this是Context,id是PendingIntent的标志,如果id相同会被认为是一个。FLAG_UPDATE_CURRENT是指后来的PendingIntent会更新前面的。



notification.setLatestEventInfo(this, msg.getTitle(), msg.getInfo(), contentIntent); notiManager.notify(id, notification);最后这两行添加状态栏的详细信息,包装PendingIntent给Notification,最后发送Notification。

更多相关文章

  1. Android 动态改变app图标
  2. Android怎样修改系统时间?
  3. Android 监听短信2种方式:Broadcast和ContentObserver
  4. [读书笔记] Android Toast 显示时间叠加问题的探讨
  5. (Android)react-native更改状态栏文字和图标颜色
  6. Android中同时选择日期和时间
  7. Android根据包名取得指定程序包的信息(名称、图标……)
  8. Android 获取未读短信同时,一并获取该短信内容的方法
  9. Android应用程序中应用图标和名字的设置

随机推荐

  1. 利用SharedPreferences(持久化技术)实现
  2. 【android】关于ListView的一些体会1
  3. Android(安卓)Studio Intent向上下活动传
  4. Android(安卓)RxJava 实战系列:从磁盘 /
  5. android 模拟器修改默认路径问题
  6. Android中LogCat输出日志的自定义
  7. 原 美团外卖Android(安卓)Crash治理之路
  8. [置顶] Android中XML文件的解析
  9. C#2Android(安卓)第一章 关于窗体
  10. Android与服务器端通信时 部分中文出现乱