编写:fastcome1985 - 原文:http://developer.android.com/training/notify-user/build-notification.html
这节课向你说明如何创建与发布一个Notification。
这节课的例子是基于NotificationCompat.Builder类的,NotificationCompat.Builder在Support Library中。为了给许多各种不同的平台提供最好的notification支持,你应该使用NotificationCompat以及它的子类,特别是NotificationCompat.Builder。
创建Notification时,可以用NotificationCompat.Builder对象指定Notification的UI内容与行为。一个Builder至少包含以下内容:
例如:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.notification_icon) .setContentTitle("My notification") .setContentText("Hello World!");
尽管在Notification中Actions是可选的,但是你应该至少添加一种Action。一种Action可以让用户从Notification直接进入你应用内的Activity,在这个activity中他们可以查看引起Notification的事件或者做下一步的处理。在Notification中,action本身是由PendingIntent定义的,PendingIntent包含了一个启动你应用内Activity的Intent。
如何构建一个PendingIntent取决于你要启动的activity的类型。当从Notification中启动一个activity时,你必须保存用户的导航体验。在下面的代码片段中,点击Notification启动一个新的activity,这个activity有效地扩展了Notification的行为。在这种情形下,就没必要人为地去创建一个返回栈(更多关于这方面的信息,请查看 Preserving Navigation when Starting an Activity)
Intent resultIntent = new Intent(this, ResultActivity.class); ... // Because clicking the notification opens a new ("special") activity, there's // no need to create an artificial back stack. PendingIntent resultPendingIntent = PendingIntent.getActivity( this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT );
可以通过调用NotificationCompat.Builder中合适的方法,将上一步创建的PendingIntent与一个手势产生关联。比方说,当点击Notification抽屉里的Notification文本时,启动一个activity,可以通过调用setContentIntent()方法把PendingIntent添加进去。
PendingIntent resultPendingIntent; ... mBuilder.setContentIntent(resultPendingIntent);
为了发布notification:
举个例子:
NotificationCompat.Builder mBuilder; ... // Sets an ID for the notification int mNotificationId = 001; // Gets an instance of the NotificationManager service NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // Builds the notification and issues it. mNotifyMgr.notify(mNotificationId, mBuilder.build());
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8