本文来自:安卓航班网

       NotificationManager与Notification对象的应用

       src/irdc.ex05_08/EX05_08_1.java

       当用户在单击Nitification列表中,MSN登录状态的Notification时,会启动这个程序,程序会发出一个Toast,并告知用户"这是模拟MSN切换登录状态的程序"。

Java代码:

/* 当user单击Notification留言条时,会运行的Activity */ 
public class EX05_08_1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* 发出Toast */
Toast.makeText(EX05_08_1.
this, "这是模拟MSN切换登录状态的程序", Toast.LENGTH_SHORT ).show(); finish();
}

}

       AndroidManifest.xml

       本应用范例程序里有两个Activity,一个是LAUNCHER启动时运行,另一个是用户单击Nitification列表中的MSN登录状态时,显示Toast的Activity。如以下的Manifest所述。

Java代码:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="irdc.ex05_08" android:versionCode="1"
android:versionName
="1.0.0">
<application
android:icon
="@drawable/icon"
android:label
="@string/app_name">
<activity
android:name
=".EX05_08"
android:label
="@string/app_name">
<intent-filter>
<action
android:name
="android.intent.action.MAIN" />
<category
android:name
="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name
=".EX05_08_1"
android:label
="@string/app_name">
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>

       本范例的学习重点在于如何运用NotificationManager来发出Notification,这在目前的手机上已经被广泛的应用,比如说,显示新短信提示、显示未接来电提示、显示系统错误信息提示等,在开发Android应用程序时可以好好利用这个功能。

       发出Notification时,有三个地方可以显示文字,第一个是当Notification被添加到状态栏时,跟着ICON跑出的文字,在程序中以myNoti.tickerText=text来设置;其余两个地方则是在Notification列表中所显示的信息标题与信息内容,是在调用setLatestEventInfo()这个方法时所设置的,那么,如果希望在状态栏中不要显示文字,只要让ICON做变化,要怎么做呢?很简单,只要不设置Notification的tickerText,就只有ICON会改变,没有文字提示;同理,如果希望在列表的地方没有标题或内容,只要传入空白字符串就可以了。

       在范例中,在线状态改变的同时,会发出系统默认的声音,主要是因为以下这一行程序:

Java代码:

myNoti.defaults=Notification.DEFAULT_SOUND; 

Notification的defaults属性列表

Java代码:

Notification.DEFAULT_SOUND
发出系统默认的声音

Notification.DEFAULT_LIGHTS
屏幕发亮

Notification.DEFAULT_VIBRATE
手机震动

Notification.DEFAULT_ALL
包含以上三种的动作

       通过上述几种方式,可以设置在发出Notification时,要同时运行的动作,甚至还可以通过设置Notification的sound属性(Url对象)来指定要播放的声音。

       程序中用NotificationManager.notify(id,Notification)来发出信息,其中传入的第一个参数id就是Notification的id。以本范例而言,由于每次更改在线状态时,发出的Notification的id皆为0,因此当新的Notification被发出时,会替换掉旧的Notification,造成不断变换状态栏上的ICON的效果,若发出的Notification的id不同,状态栏上就会显示不同的ICON。

原文地址:http://www.apkway.com/forum.php?mod=viewthread&tid=1909&extra=page%3D1

posted on 2011-07-20 17:13  泉と緣  阅读(576)  评论(0编辑  收藏  举报