实现 Android 通知提示功能

Android支持Toast和NotificationManager两种通知方式,前者相当于一个定时关闭的对话框,后者是在状态栏上显示一条消息。Toast和Notification都可以随时取消。

Toast

A toast is a view containing a quick little message for the user. The toast class helps you create and show those. Toast的使用很简单:

Toast.makeText(this, "Service destroyed…", Toast.LENGTH_LONG).show();

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 假如状态条的图片有几个级别,就设置这里.

ledARGBLED灯的颜色.

ledOffMSLED关闭时的闪光时间(以毫秒计算)

ledOnMS LED开始时的闪光时间(以毫秒计算)

number 这个通知代表事件的号码

sound 通知的声音

tickerText通知被显示在状态条时,所显示的信息

vibrate 振动模式.

when 通知的时间戳.

Notification的公共方法:

describeContents()Describe the kinds of special objects contained in this Parcelable's marshalled representation.

setLatestEventInfo(Context context, CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent) 设置Notification留言条的参数

writeToParcel(Parcel parcel, int flags)Flatten this notification from a parcel.

toString() …………….

将Notification发送到状态条上:

Notification notification = new Notification(R.drawable.icon,

"Service started", System.currentTimeMillis());

PendingIntent contentIntent = PendingIntent.getActivity(this, 0,

new Intent(this, Main.class), 0);

// must set this for content view, or will throw a exception

notification.setLatestEventInfo(this, "Test Service",

"Service started", contentIntent);

nm.notify(R.string.hello, notification);

Notification的取消

nm.cancel(R.string.hello);

package wzhnsc.testnotification;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;

public class Main extends Activity {

<wbr><wbr><wbr> NotificationManager objNotificationManager;<br><wbr><wbr><wbr> Notification<wbr><wbr><wbr><wbr><wbr><wbr><wbr> objNotification;<br><wbr><wbr><wbr> PendingIntent<wbr><wbr><wbr><wbr><wbr><wbr> objPendingIntent;<br><br><wbr><wbr><wbr> @Override<br><wbr><wbr><wbr> public void onCreate(Bundle savedInstanceState) {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> super.onCreate(savedInstanceState);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> setContentView(R.layout.main);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><span style="font-weight:bold">// 声明通知(消息)管理器只要知道它是用来管理通知消息的就行了</span><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> objNotificationManager = (NotificationManager) getSystemService( NOTIFICATION_SERVICE );<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> int icon = R.drawable.icon;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> CharSequence tickerText = "小图标旁的文字";<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> objNotification = new Notification( icon,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> tickerText,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> System.currentTimeMillis() );<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><span style="font-weight:bold">// 如果有振动或者全部提示方式,必须在 AndroidManifest.xml 加入振动权限</span><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> objPendingIntent = PendingIntent.getActivity( this,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 0,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

你可能感兴趣的:(android)