Android Notification介紹 – Android移動開發技術文章_手機開發 Android移動開發教學課程

 

Notification就是在桌面的狀態通知欄。這主要涉及三個主要類:

 

Notification:設置通知的各個屬性。

 

NotificationManager:負責發送通知和取消通知

 

Notification.Builder:Notification內之類,創建Notification對象。非常方便的控制所有的flags,同時構建Notification的風格。

 

主要作用:

 

1.創建一個狀態條圖標。

 

2.在擴展的狀態條窗口中顯示額外的信息(和啟動一個Intent)。

 

3.閃燈或LED。

 

4.電話震動。

 

5.發出聽得見的警告聲(鈴聲,保存的聲音文件)。

 

Notification是看不見的程序組件(Broadcast Receiver,Service和不活躍的Activity)警示用戶有需要註意的事件發生的最好途徑

 

下面主要介紹這三個類:

 

一、NotificationManager

 

這個類是這三個類中最簡單的。主要負責將Notification在狀態顯示出來和取消。主要包括5個函數:void cancel(int id),void cancel(String tag, int id),void cancelAll(),void notify(int id, Notification notification),notify(String tag, int id, Notification notification)

 

看看這五個函數就知道這個類的作用瞭。但是在初始化對象的時候要註意:

 

NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

 

二、Notification

 

設置這個類主要是設置Notification的相關屬性。初始化

 

Notification n = new Notification();

 

Notification裡面有很多屬性下面選擇幾個常用的介紹一下

 

icon  這個是設置通知的圖標。像QQ的小企鵝

 

sound  這個是設置來通知時的提示音。

 

tickerText  設置提示的文字。

 

vibrate     來通知時振動。

 

when       設置來通知時的時間

 

flag     這個很有意思是設置通知在狀態欄顯示的方式。它的值可以設置為蝦米這些值:

 

FLAG_NO_CLEAR 將flag設置為這個屬性那麼通知欄的那個清楚按鈕就不會出現

 

FLAG_ONGOING_EVENT 將flag設置為這個屬性那麼通知就會像QQ一樣一直在狀態欄顯示

 

DEFAULT_ALL  將所有屬性設置為默認

 

DEFAULT_SOUND  將提示聲音設置為默認

 

DEFAULT_VIBRATE  將震動設置為默認

 

三、Notification.Builder

 

這個類一般用於管理Notification,動態的設置Notification的一些屬性。即用set來設置。也沒啥好說的。

 

看一個例子:這個例子還需要在xml中添加兩個按鈕

 

public class Main extends Activity {

    private Button sendBtn , cancelBtn;

    private Notification n;

    private NotificationManager nm;

    //Notification的標示ID

    private static final int ID = 1;

   

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

       

        //實例化按鈕

        sendBtn = (Button)this.findViewById(R.id.sendBtn);

        cancelBtn = (Button)this.findViewById(R.id.cancelBtn);

       

        //獲取NotificationManager實例

        String service = NOTIFICATION_SERVICE;

        nm = (NotificationManager)this.getSystemService(service);

       

        //實例化Notification

        n = new Notification();

        //設置顯示圖標,該圖標會在狀態欄顯示

        int icon = R.drawable.icon;

        //設置顯示提示信息,該信息也會在狀態欄顯示

        String tickerText = "Test Notifaction";

        //顯示時間

        long when = System.currentTimeMillis();

       

        n.icon = icon;

        n.tickerText = tickerText;

        n.when = when;

        n.flags = Notification.FLAG_NO_CLEAR;

        n.flags = Notification.FLAG_ONGOING_EVENT;

       

        //為按鈕添加監聽器

        sendBtn.setOnClickListener(sendClickListener);

        cancelBtn.setOnClickListener(cancelClickListener);

    }

   

    private OnClickListener sendClickListener = new OnClickListener() {

 

  @Override

  public void onClick(View v) {

   //實例化Intent

   Intent intent = new Intent(Main.this, Main.class);

   //獲取PendingIntent

   PendingIntent pi = PendingIntent.getActivity(Main.this, 0, intent, 0);

   //設置事件信息

   n.setLatestEventInfo(Main.this, "My Title", "My Content", pi);

   //發出通知

   nm.notify(ID, n);

  

  }

};

www.aiwalls.com

private OnClickListener cancelClickListener = new OnClickListener(){

 

  @Override

  public void onClick(View v) {

   nm.cancel(ID);

  }

};

}

 

摘自 zqiang_55的專欄

發佈留言