安开发卓之Notification(一)代码直接能用

zhangsx194 8年前

来自: http://www.cnblogs.com/sunzan/p/5242799.html

Notification是Android中很理想的一种显示提示信息的方法,它可以将应用程序的信息传递到我们的Android桌面状态栏,采用这种消息传递方式不会影响到用户对手机的正常使用。而且Notification不仅仅可以传递文字信息,还可以传递图片信息,甚至可以将我们的控件追加到上面,只要用户不对其进行清空,那么消息将一直保存在用户桌面的状态栏当中。

Notification通常用来进行对用户的更新提醒等消息的传递。

Notification需要使用到NotificationManager(消息通知管理类)对消息进行管理,其创建需要五个步骤:

(1)通过getSystemService获取Notification对象

(2)创建一个Notification,每一个notification对应一个notification对象。

(3)创建一个PendingIntent对象

(4)使用notification类的setLatestEventInfo方法设置Notification对象的详细信息

(5)使用NotificationManager对象的notify方法显示消息

在第二步时应当注意需要设置显示在屏幕上方状态栏的通知消息、通知消息前方的图像资源ID和放出通知的时间,一般为当前时间

(3)创建PendingIntent对象:

由于notification可以与应用程序脱离,也就是说你的应用程序已经关闭,消息仍然显示在状态栏之中,当应用程序再次启动后,又可以重新控制这些notification,如清除、替换等工作。因此需要PendingIntent对象,该对象由安卓系统维护,因此,应用程序关闭后,消息仍然不会被释放。

(4)在使用notify方法时需要指定Notification对象的唯一ID,这个ID必须相对于一个Notificationmanager对象来说是唯一的,否则就会覆盖相同ID的

Notification

NotificationManager manager  = (NotificationManager)

getSystemService(NOTIFICATION_SERVICE);

String notice = "您有短消息了!";

Notification notification = new Notification(R.drawable. ic_launcher, notice,System.currentTimeMillis());

PendingIntent contentIntent = PendingIntent.getActivity

(getApplicationContext(), 0, getIntent(), 0);

notification. setLatestEventInfo

(getApplicationContext(), "小搬运工又变帅了 ", " 华中软件龙头企业 ", contentIntent);

notification.defaults = Notification.DEFAULT_SOUND;

notification.defaults = Notification.DEFAULT_LIGHTS;

notification.defaults = Notification.DEFAULT_VIBRATE;

notification.defaults = Notification.DEFAULT_ALL;

manager.notify(R.drawable.ic_launcher,notification);

1、如果要调取声音,需用使用到:android:name=“android.permission.VIBRATE”权限

NotificationManager.cancel(resId)清除某个数据 NotificationManager.cancelAll()清除某个NotificationManager对象中的所有消息。在清除完消息后,需要做一些善后工作,需要通过notification,deleteIntent来完成,deleteIntent也需要一个pendingIntent类型的变量,用于在清除所用的notification对象时调用。这个动作可以与Activity、Service、Broadcast关联。

如果想永久保存推送的通知,需要增加代码:

•notification.flags = Notification.FLAG_NO_CLEAR;