1. 程式人生 > >Android通知Notification入門小例子(一)

Android通知Notification入門小例子(一)

       通知(Notification)是 Android 系統中比較有特色的一個功能,當某個應用程式希望向
使用者發出一些提示資訊,而該應用程式又不在前臺執行時,就可以藉助通知來實現。發出一
條通知後,手機最上方的狀態列中會顯示一個通知的圖示,下拉狀態列後可以看到通知的詳
細內容。
使用:當程式進入到後臺的時候我們才需要使用通知,所以在廣播接收器和服務中使用通知較多。

效果圖:


建立通知的步驟:

1、建立通知管理類NotificationManager的例項,用來管理通知 NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
2、建立通知類Notification例項(用來儲存通知所需的資訊)Notification notification = new Notification(R.drawable.icon, "This is ticker text",System.currentTimeMillis());一共三個引數:
1)、指定通知使用的圖示,如:R.drawable.ic_launcher ;
2)、指定通知的ticker內容,通知被建立的時候,在狀態列一閃而過,屬於瞬時提示資訊。
3)、指定通知被建立的時間,以毫秒為單位,下拉狀態列時,這個時間會顯示在相應的通知上。3、設定通知標準的佈局notification.setLatestEventInfo(context, "This is content title", "This is content text", pendingIntent);
四個引數:
1)、第一個引數;上下文物件Context;
2)、第二個引數:指定通知的標題內容,下拉系統狀態列可看到;
3)、第三個引數:指定通知的正文,下拉系統狀態列可看到;
4)、第四個引數:當用戶點選這條通知時就會執行,用於啟動活動、啟動服務以及傳送廣播等。4、啟動通知manager.notify(1, notification);兩個引數:
1)、id,保證每個通知的id唯一;
2)、Notification物件

程式碼:

layout資料夾下:activity_main.xml和notification_text.xml中程式碼比較簡單,不貼了

MainActivity.java中程式碼:

package com.demo.notificationdemo;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {

	private Button start_notification;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		start_notification = (Button) findViewById(R.id.start_notification);
		start_notification.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.start_notification:
			/**
			 * 建立通知管理類NotificationManager的例項,用來管理通知
			 */
			NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

			/**
			 * 建立通知類Notification例項(用來儲存通知所需的資訊); 一共三個引數:
			 * 1)、指定通知使用的圖示,如:R.drawable.ic_launcher ;
			 * 2)、指定通知的ticker內容,通知被建立的時候,在狀態列一閃而過,屬於瞬時提示資訊。
			 * 3)、指定通知被建立的時間,以毫秒為單位,下拉狀態列時,這個時間會顯示在相應的通知上。
			 */
			Notification notification = new Notification(
					R.drawable.ic_launcher, "有通知來了", System.currentTimeMillis());

			/**
			 * 例項化Intent,構建意圖:從當前頁面條狀到NotificationActivity頁面
			 */
			Intent intent = new Intent(this, NotificationActivity.class);

			/**
			 * 用於啟動活動、啟動服務以及傳送廣播等。 根據需求來選擇是使用
			 * getActivity()方法、getBroadcast()方法、還是 getService() 方法。 一共四個引數:
			 * 1)、第一個引數是 上下文Context ; 2)、 第二個引數一般用不到,通常都是傳入 0 即可 3)、第三個引數是一個
			 * Intent物件,我們可以通過這個物件構建出 PendingIntent 的“意圖”; 4)、第四個引數用於確定
			 * PendingIntent 的行為
			 */
			PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
					intent, PendingIntent.FLAG_CANCEL_CURRENT);

			/**
			 * 設定通知標準的佈局。四個引數: 1)、上下文物件Context; 2)、指定通知的標題內容,下拉系統狀態列可看到;
			 * 3)、指定通知的正文,下拉系統狀態列可看到; 4)、用於啟動活動、啟動服務以及傳送廣播
			 */
			notification.setLatestEventInfo(this, "股票大漲", "今日萬科的股票停牌,應對惡意收購",
					pendingIntent);

			/**
			 * 啟動通知. 兩個引數: 1)、id,保證每個通知的id唯一; 2)、Notification物件
			 */
			manager.notify(1, notification);
			break;

		default:
			break;
		}
	}

}

NotificationActivity.java中程式碼:
package com.demo.notificationdemo;

import android.app.Activity;
import android.app.NotificationManager;
import android.os.Bundle;

public class NotificationActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.notification_text);
		NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		//cancel()方法中的引數是我們在啟動通知,呼叫manager.notify(1, notification)方法時,傳的id
		manager.cancel(1);
	}
}


下載demo: