Android状态栏提醒(Notification,NotificationManager)的使用
大家好今天简单讲一下Android状态栏提醒,这个在开发中也会经常使用,当我们插上USB会有状态栏提醒,来短信时也会有状态栏的提醒。
而在Android中有提醒功能的也可以用AlertDialog,但是我们要审重的使用,因为当使用AlertDialog 的时候,用户正在进行的操作将会被打断
因为当前焦点被AlertDialog得到。我们可以想像一下,当用户打游戏正爽的时候,这时候来了一条短信。如果这时候短信用AlertDialog提醒,用户必须先去处理这条提醒,从而才能继续游戏。用户可能会活活被气死。而使用Notification就不会带来这些麻烦事,用户完全可以打完游戏再去看这条短信。所以在开发中应根据实际需求,选择合适的控件。
好了我今天又简单写了一个Demo, 教大家如何使用Notification,大致分以下几个步骤:
第一步:新建一个Android工程命名为NotificationDemo.
第二步:修改main.xml代码如下:
view plaincopy to clipboardprint? <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: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="Welcome to Mr Wei's blog" /> <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> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: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="Welcome to Mr Wei's blog" /> <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代码如下:
package com.tutor.notification; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class NotificationDemo extends Activity implements OnClickListener{ private Context mContext; private Button showButton,cancelButton; private Notification mNotification; private NotificationManager mNotificationManager; private final static int NOTIFICATION_ID = 0x0001; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setupViews(); } //这里是初始化一些操作,可以看到onCreate()方法里代码非常简洁。 public void setupViews(){ mContext = NotificationDemo.this; showButton = (Button)findViewById(R.id.showButton); cancelButton = (Button)findViewById(R.id.cancelButton); mNotification = new Notification(R.drawable.icon,"This is a notification.",System.currentTimeMillis()); //将使用默认的声音来提醒用户 mNotification.defaults = Notification.DEFAULT_SOUND; mNotificationManager = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE); showButton.setOnClickListener(this); cancelButton.setOnClickListener(this); } //按钮点击事件响应 public void onClick(View v) { if(v == showButton){ Intent mIntent = new Intent(mContext,NotificationDemo.class); //这里需要设置Intent.FLAG_ACTIVITY_NEW_TASK属性 mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent mContentIntent =PendingIntent.getActivity(mContext,0, mIntent, 0); //这里必需要用setLatestEventInfo(上下文,标题,内容,PendingIntent)不然会报错. mNotification.setLatestEventInfo(mContext, "10086", "您的当前话费不足,请充值.哈哈~", mContentIntent); //这里发送通知(消息ID,通知对象) mNotificationManager.notify(NOTIFICATION_ID, mNotification); }else if(v == cancelButton){ //取消只要把通知ID传过来就OK了. mNotificationManager.cancel(NOTIFICATION_ID); } } }
package com.tutor.notification; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class NotificationDemo extends Activity implements OnClickListener{ private Context mContext; private Button showButton,cancelButton; private Notification mNotification; private NotificationManager mNotificationManager; private final static int NOTIFICATION_ID = 0x0001; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setupViews(); } //这里是初始化一些操作,可以看到onCreate()方法里代码非常简洁。 public void setupViews(){ mContext = NotificationDemo.this; showButton = (Button)findViewById(R.id.showButton); cancelButton = (Button)findViewById(R.id.cancelButton); mNotification = new Notification(R.drawable.icon,"This is a notification.",System.currentTimeMillis()); //将使用默认的声音来提醒用户 mNotification.defaults = Notification.DEFAULT_SOUND; mNotificationManager = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE); showButton.setOnClickListener(this); cancelButton.setOnClickListener(this); } //按钮点击事件响应 public void onClick(View v) { if(v == showButton){ Intent mIntent = new Intent(mContext,NotificationDemo.class); //这里需要设置Intent.FLAG_ACTIVITY_NEW_TASK属性 mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent mContentIntent =PendingIntent.getActivity(mContext,0, mIntent, 0); //这里必需要用setLatestEventInfo(上下文,标题,内容,PendingIntent)不然会报错. mNotification.setLatestEventInfo(mContext, "10086", "您的当前话费不足,请充值.哈哈~", mContentIntent); //这里发送通知(消息ID,通知对象) mNotificationManager.notify(NOTIFICATION_ID, mNotification); }else if(v == cancelButton){ //取消只要把通知ID传过来就OK了. mNotificationManager.cancel(NOTIFICATION_ID); } } }
本文来自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
相关推荐
fanleiym 2012-03-06
wangkuifeng0 2010-07-20
83520298 2020-07-06
王磊的程序员之路 2020-06-21
ustcrding 2020-06-03
wangdazhu0 2020-05-12
xilove0 2020-03-03
安辉 2019-12-02
Go贝壳 2015-06-14
acsunqi 2019-06-18
LeePink 2014-08-23
liangston 2015-03-10
aiya 2016-04-22
birdcome 2019-06-30
CoderWatson 2019-06-30
LadyFork 2019-06-30
Geeny 2019-06-29
lianback 2019-06-20