1.可以使用3類通知方式來通知用戶:
- Toast 通知:適合顯示來自後臺的簡要的文字通知;
- 狀態欄通知:適合來自後臺的許要持久並接受用戶響應的通知;
- 對話框通知:適合和Activity有關的通知(前面已經提過);
2.Toast通知:
- 創建Toast通知:首先用一個makeText()方法來實例化一個Toast對象,它接受3個參數:應用的Context,文本信息和持續長度。然後調用
show()
方法來顯示。如:Context context = getApplicationContext(); CharSequence text = "Hello toast!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show();
也可以簡單的寫成:Toast.makeText(context, text, duration).show();
- 將Toast通知放在指定的位置上:
使用
setGravity(int, int, int)
,第一個參數爲對其方式,第二個位x偏移量,第三個爲y偏移量。如:toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
3.狀態欄通知:
狀態欄通知可以在系統狀態欄上顯示一個圖標(也可以帶上文字)和一個在通知窗口中的通知文字內容。當用戶選擇該通知的時候,系統會啓動該通知定義的Intent(通常是加載一個界面)。同時也可以爲通知設置聲音、震動、和閃光燈。
創建狀態欄通知:
Activity
和Service都可以創建一個狀態欄通知。需要用到兩個類:
和Notification
NotificationManager。具體爲:
的應用:
獲得一個對
NotificationManager
實例化String ns = Context.NOTIFICATION_SERVICE; NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
Notification
對象(同時設置圖標、tickerText和時間):定義通知內容和int icon = R.drawable.notification_icon; CharSequence tickerText = "Hello"; long when = System.currentTimeMillis(); Notification notification = new Notification(icon, tickerText, when);
PendingIntent
:將Notification傳遞給NotificationManager:Context context = getApplicationContext(); CharSequence contentTitle = "My notification"; CharSequence contentText = "Hello World!"; Intent notificationIntent = new Intent(this, MyClass.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
private static final int HELLO_ID = 1; mNotificationManager.notify(HELLO_ID, notification);