1. 程式人生 > >通知的各種實用寫法技巧

通知的各種實用寫法技巧

           Notification的實用技巧

這裡講下兩種寫法:廢話少說,直接上程式碼。

第一種:

	// 第一種彈出通知的方法
	@SuppressWarnings("deprecation")
	private void setpopnotification1() {
		// 首先拿到一個通知的管理者
		NotificationManager manager1 = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		// 設定沒有下拉時顯示的圖示和標題
		int icon1 = R.drawable.ic_launcher;
		CharSequence tickerText = "您有新的預約";
		// 顯示的時間
		int when = (int) System.currentTimeMillis();

		// 過時的寫法
		Notification notification = new Notification(icon1, tickerText, when);
		// 定義下拉通知欄時要展現的內容資訊
		CharSequence contentTitle = "您的預約提醒";
		CharSequence contentText = "通知的內容在這裡顯示了哦";
		Intent notificationIntent = new Intent(this, MainActivity.class);
		// 配合SingleTask
		// notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
		// | Intent.FLAG_ACTIVITY_CLEAR_TASK);
		PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
				notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
		notification.setLatestEventInfo(this, contentTitle, contentText,
				contentIntent);
		notification.flags = Notification.FLAG_AUTO_CANCEL;// 設定自動消失
		manager1.notify(1, notification);
	}


                                        


第二種:

// 第二種彈出通知的方法
	private void setpopnotification2() {
		NotificationManager manager2 = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		NotificationCompat.Builder builder = new NotificationCompat.Builder(
				this);
		int icon = R.drawable.ic_launcher;
		// 設定沒有下拉時顯示的圖示和標題
		builder.setSmallIcon(icon);
		builder.setTicker("您有新的預約");
		// 設定點選後自動消失
		builder.setAutoCancel(true);
		// 設定下拉後顯示的圖示
		builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),
				R.drawable.ic_launcher));
		// 下拉後顯示內容標題
		builder.setContentTitle("您的預約提醒");
		// 顯示的內容
		builder.setContentText("通知的內容在這裡顯示了哦");
		// 顯示時間
		builder.setWhen(System.currentTimeMillis());
		// 設定通知的優先順序--Max代表不管手機目前有多少其他通知都能顯示在最上面
		builder.setPriority(Notification.PRIORITY_MAX);
		// 設定通知的鈴聲。震動。燈光
		// DEFAULT_ALL---預設系統全部
		// DEFAULT_SOUND--鈴聲
		// DEFAULT_VIBRATE--震動
		// ...
		builder.setDefaults(Notification.DEFAULT_ALL);

		// 點選能跳轉部分
		Intent intent = new Intent(this, MainActivity.class);
		// 設定flag---FLAG_ACTIVITY_NEW_TASK保證每次都是最新的(專案中很實用)
		// 當點選要跳轉時需要在清單檔案中對activity進行啟動模式設定--一般都是singleTask
		intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
				| Intent.FLAG_ACTIVITY_CLEAR_TASK);
		// 給每個通知設定唯一的requestCode,保證每次的通知不重複,
		// 不然點選時就會覆蓋之前的,點選之前彈出的通知就沒有用
		/**
		 * Flags為PendingIntent.FLAG_CANCEL_CURRENT,則只有最後一次PendingIntent有效,
		 * 之前的都無效了。 PendingIntent.FLAG_UPDATE_CURRENT,則每次都是最新的。。具體的使用要看專案需求了
		 */
		int requestCode = (int) SystemClock.uptimeMillis();
		PendingIntent pendingIntent = PendingIntent.getActivity(this,
				requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
		builder.setContentIntent(pendingIntent);
		// 設定顯示
		manager2.notify(1, builder.build());
	}

上述兩種都可以使用顯示通知出來,建議使用第二種,畢竟第一種已經過時了。瞭解了基本用法結合專案需求來做會更好。

附上Demo地址:http://download.csdn.net/detail/ae_fring/9677156