当前位置: 代码迷 >> Android >> Android状态栏提示(Notification,NotificationManager)的使用
  详细解决方案

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

热度:161   发布时间:2016-05-01 14:31:49.0
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

  相关解决方案