2010年6月26日 星期六

Android程式設計 (十三) 使用Notification

Notification提供跨Activity之訊息通知機制,Activity收到的通知訊息會顯示在狀態欄,使用者可從狀態欄拖出完整版面以檢視Notification詳細內容。
要使用訊息提醒功能,需要匯入以下類別:
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
Notification都是由NotificationManager管理,因此應用程式必須先取NotificationManager參照,做法如下:
NotificationManager nManager = (NotificationManager) getSystemService (NOTIFICATION_SERVICE);
接著建立Notification實體,其中第1個參數為出現在狀態欄的圖示,第2個為訊息標題,第3個參數為Notification建立時間。
Notification nMsg = new Notification(R.drawable.icon, "重要訊息", System.currentTimeMillis());
接下來是建立PendingIntent實體,PendingIntent用來封裝Intent,以便將所封裝的Intent提供給其它應用程式使用,外部應用程式執行這個PendingIntent時,就能間接調用裡面的Intent。做法如下:
PendingIntent pIntent = PendingIntent.getActivity(this,0,new Intent(this, MainActivity.class),PendingIntent.FLAG_UPDATE_CURRENT);
getActivity()方法的第1個參數是目前應用程式的Context,簡單說就是目前應用程式的狀態。getActivity()方法的第2個參數目前保留不使用。第3個參數即是提供給外部應用程式用來啟動Activity的Intent實體。第4個參數通常設定為FLAG_UPDATE_CURRENT表示如果PendingIntent已存在,則更新其資料。
接下來是設定Notification內容,使用Notification的setLatestEventInfo()方法指定Notification標題及內容。最後再使用NotificationManager的Notify()方法發佈Notification即可。
nMsg.setLatestEventInfo(this,"南開科大","電腦遊戲設計組歡迎加入!",pIntent);
nManager.notify(0, nMsg);
透過PendingIntent機制,可發現即使送出Notification的應用程式已終止執行,只要點撃Notification訊息內容,Notification管理程式即可透過封存在PendingIntent裡的Context及Intent,重新啟動Intent中的Activity。