Android状态栏提醒(Notification,NotificationManager)的使用

wangkuifeng0 2010-07-20

大家好今天简单讲一下Android状态栏提醒,这个在开发中也会经常使用,当我们插上USB会有状态栏提醒,来短信时也会有状态栏的提醒。

而在Android中有提醒功能的也可以用AlertDialog,但是我们要审重的使用,因为当使用AlertDialog 的时候,用户正在进行的操作将会被打断

因为当前焦点被AlertDialog得到。我们可以想像一下,当用户打游戏正爽的时候,这时候来了一条短信。如果这时候短信用AlertDialog提醒,用户必须先去处理这条提醒,从而才能继续游戏。用户可能会活活被气死。而使用Notification就不会带来这些麻烦事,用户完全可以打完游戏再去看这条短信。所以在开发中应根据实际需求,选择合适的控件。

好了我今天又简单写了一个Demo, 教大家如何使用Notification,大致分以下几个步骤:

第一步:新建一个Android工程命名为NotificationDemo.

第二步:修改main.xml代码如下:

view plaincopy to clipboardprint?

<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="WelcometoMrWei'sblog"

/>

<Button

android:id="@+id/showButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="showNotification"

/>

<Button

android:id="@+id/cancelButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="cancelNotification"

/>

</LinearLayout>

<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="WelcometoMrWei'sblog"

/>

<Button

android:id="@+id/showButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="showNotification"

/>

<Button

android:id="@+id/cancelButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="cancelNotification"

/>

</LinearLayout>

 

第三步:修改NotificationDemo.java代码如下:

view plaincopy to clipboardprint?

packagecom.tutor.notification;

importandroid.app.Activity;

importandroid.app.Notification;

importandroid.app.NotificationManager;

importandroid.app.PendingIntent;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

publicclassNotificationDemoextendsActivityimplementsOnClickListener{

privateContextmContext;

privateButtonshowButton,cancelButton;

privateNotificationmNotification;

privateNotificationManagermNotificationManager;

privatefinalstaticintNOTIFICATION_ID=0x0001;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

setupViews();

}

//这里是初始化一些操作,可以看到onCreate()方法里代码非常简洁。

publicvoidsetupViews(){

mContext=NotificationDemo.this;

showButton=(Button)findViewById(R.id.showButton);

cancelButton=(Button)findViewById(R.id.cancelButton);

mNotification=newNotification(R.drawable.icon,"Thisisanotification.",System.currentTimeMillis());

//将使用默认的声音来提醒用户

mNotification.defaults=Notification.DEFAULT_SOUND;

mNotificationManager=(NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);

showButton.setOnClickListener(this);

cancelButton.setOnClickListener(this);

}

//按钮点击事件响应

publicvoidonClick(Viewv){

if(v==showButton){

IntentmIntent=newIntent(mContext,NotificationDemo.class);

//这里需要设置Intent.FLAG_ACTIVITY_NEW_TASK属性

mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

PendingIntentmContentIntent=PendingIntent.getActivity(mContext,0,mIntent,0);

//这里必需要用setLatestEventInfo(上下文,标题,内容,PendingIntent)不然会报错.

mNotification.setLatestEventInfo(mContext,"10086","您的当前话费不足,请充值.哈哈~",mContentIntent);

//这里发送通知(消息ID,通知对象)

mNotificationManager.notify(NOTIFICATION_ID,mNotification);

}elseif(v==cancelButton){

//取消只要把通知ID传过来就OK了.

mNotificationManager.cancel(NOTIFICATION_ID);

}

}

}

packagecom.tutor.notification;

importandroid.app.Activity;

importandroid.app.Notification;

importandroid.app.NotificationManager;

importandroid.app.PendingIntent;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

publicclassNotificationDemoextendsActivityimplementsOnClickListener{

privateContextmContext;

privateButtonshowButton,cancelButton;

privateNotificationmNotification;

privateNotificationManagermNotificationManager;

privatefinalstaticintNOTIFICATION_ID=0x0001;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

setupViews();

}

//这里是初始化一些操作,可以看到onCreate()方法里代码非常简洁。

publicvoidsetupViews(){

mContext=NotificationDemo.this;

showButton=(Button)findViewById(R.id.showButton);

cancelButton=(Button)findViewById(R.id.cancelButton);

mNotification=newNotification(R.drawable.icon,"Thisisanotification.",System.currentTimeMillis());

//将使用默认的声音来提醒用户

mNotification.defaults=Notification.DEFAULT_SOUND;

mNotificationManager=(NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);

showButton.setOnClickListener(this);

cancelButton.setOnClickListener(this);

}

//按钮点击事件响应

publicvoidonClick(Viewv){

if(v==showButton){

IntentmIntent=newIntent(mContext,NotificationDemo.class);

//这里需要设置Intent.FLAG_ACTIVITY_NEW_TASK属性

mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

PendingIntentmContentIntent=PendingIntent.getActivity(mContext,0,mIntent,0);

//这里必需要用setLatestEventInfo(上下文,标题,内容,PendingIntent)不然会报错.

mNotification.setLatestEventInfo(mContext,"10086","您的当前话费不足,请充值.哈哈~",mContentIntent);

//这里发送通知(消息ID,通知对象)

mNotificationManager.notify(NOTIFICATION_ID,mNotification);

}elseif(v==cancelButton){

//取消只要把通知ID传过来就OK了.

mNotificationManager.cancel(NOTIFICATION_ID);

}

}

}

第四步:运行Android工程,效果如下图所示:

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Android_Tutor/archive/2010/06/27/5696773.aspx

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Android_Tutor/archive/2010/06/27/5696773.aspx

相关推荐