1. 程式人生 > >Android通知Notification的使用

Android通知Notification的使用

我們經常可以在Android手機中下拉狀態列時可以看到有許多的推送通知,Android中專門提供了Notification來實現這種效果,如下:


Notification的基本使用:

建立一個NotificationManager類例項,用來發送通知

NotificationManager manager = (Notification)getSystemService(NOTIFICATION_SERVICE);


建立一個Notification類例項,用來設定通知的各個細節,比如圖示、標題、內容..等

Notification notification = new Notification();


通知的設定主要有兩個模組,一個是在狀態列上的顯示,一個是在下拉狀態列後的顯示,如下:


設定通知在狀態列上顯示的細節

notification.icon = R.drawable.ic_launcher;//設定通知在狀態列上顯示的圖示

notification.tickerText = "你有一條新訊息";//當通知觸發時會顯示在狀態列上


設定通知在下拉狀態列後顯示的細節

//設定下拉狀態列後該通知的佈局,可以在自定義Notification佈局時使用
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.notify);
notification.contentView = remoteViews;

notification.when = System.currentTimeMillis();  //設定通知顯示的時間

獲得一個PendingIntent物件,用來設定使用者點選通知時發生的跳轉
Intent newintent = new Intent(this,MainActiviy.class);
PendingIntent pintent = PendingIntent.getActivity(getContext(), 0, newintent, 0);


分析:
可以看到這裡有一個PendingIntent物件,PendingIntent物件其實就相當於Intent物件的包裝,Intent是立即跳轉到某個Activity或者Service等,而PendingIntent是在某個時刻觸發了才會進行跳轉
要得到一個pendingIntent物件,使用PendingIntent類的靜態方法,主要有以下幾種:
getActivity(Context, int, Intent, int)   【跳轉到一個Activity】
getBroadcast(Context, int, Intent, int)【開啟一個BroadcastReceiver】
getService(Context, int, Intent, int)
   【啟動一個Service】

可以看到,這裡有4個引數,它們分別是:
第一個引數 :當前的上下文物件,比如在Activity中可以通過getContext()獲得
第二個引數 :當有多條通知時會用到,如果兩個通知的requestCode值一樣時,後面的通知就會對之前的通知起作用,配合第四個引數設定
第三個引數 :傳入一個Intent物件,這個intent用來做使用者點選通知時的跳轉
第四個引數 :flag標誌位,用來表示intent中的資料的覆蓋方式,比如你推送了訊息1,並在其中的Intent中putExtra了一個值“ABC”,在未點選該訊息前,繼續推送第二條訊息,並在其中的Intent中putExtra了一個值“CBA”,這時候,如果你設定的是PendingIntent.FLAG_UPDATE_CURRENT,那麼當你單擊訊息1或者訊息2,你會發現,他倆個的Intent中讀取過來的資訊都是“CBA”,就是說,第二個替換了第一個的內容,如果你設定的是PendingIntent.FLAG_CANCEL_CURRENT,會發現點選訊息1時,沒反應,第二條可以點選。flag的作用只有在第二個引數requestCode一樣時才會起作用。

呼叫setLatestEventInfo

設定完以上細節後還要呼叫setLatestEventInfo方法來配置Notification在下拉後的通知視窗中的外觀,傳入當前context物件,以及設定通知的標題和內容,並且將建立好的PendingIntent設定進去
notification.setLastestEventInfo(getContext(), "這裡是通知的標題", "這裡是通知的內容", pendingIntent);


傳送通知

以上都設定完成之後,只需要通過NotificationManager物件來發送通知即可:
manager.notify(1,notification);


分析:這裡有兩個引數,第一個表示這個通知的ID,用來標識這個通知,第二個引數即設定你要傳送的Notification物件
為什麼要為Notification設定ID?

如果Notification使用的是相同的ID,那無論傳送多少次,通知欄只會顯示一條通知
如果是以下這種情況:
manager.notify(1,notification);
manager.notify(2,notification);
manager.notify(3,notification);


可以看到通知欄出現了三條通知 另外,取消通知的時候也會用到這個ID來標識取消的是哪一個Notification

如何取消通知?

通過通知管理者呼叫cancel方法,傳入一個ID,這個ID就是之前notify時為notification設定的那個ID,傳入哪個ID即取消哪個通知:
manager.cancel(1);
另外,也可以取消所有通知:
manager.cancelAll();


通知的個性化設定

Notification還為我們提供了許多提醒的效果,比如振動、鈴聲、LED燈的閃爍等等
設定系統預設提示音:
notification.defaults = notification.DEFAULT_SOUND;



設定自定義提示音:
Uri soundUri = Uri.parse("android.resource://"+context.getPackageName()+"/"+R.raw.mysound);
notification.sound = soundUri;
Uri路徑前面的那段是通用的,如果要修改成其他的聲音的話,只需修改檔名(R.raw.mysound)


設定系統預設震動:
notification.defaults = notification.DEFAULT_VIBRATE;


設定自定義震動:
long[] vibrateArgs = new long[]{0,1000,1000,1000,1000,1000};
notification.vibrate = vibrateArgs;
這裡傳入一個long陣列,裡面的元素表示:0s後開始震動,且持續震動1s,然後停止1s,接著再震動1s,以此類推

設定系統預設三色燈:
notification.defaults = notification.DEFAULT_LIGHTS;


設定自定義三色燈:
notification.ledARGB = 0xff0000ff; //【燈光顏色】
notification.ledOnMS = 300;	   //【亮持續時間】
notification.ledOffMS = 300;	   //【暗的時間】


最後附上完整程式碼:
NotificationManager manager = (NotificationManager)context.getSystemService(Service.NOTIFICATION_SERVICE);
		
		Notification notification = new Notification();
		
		//設定狀態列的顯示
		notification.tickerText = "您有一條新訊息";
		notification.icon = R.drawable.ic_launcher;
		
		//自定義佈局
		RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.notification_item);
		remoteView.setImageViewResource(R.id.icon, R.drawable.ic_launcher);
		notification.contentView = remoteView;
		
		//設定狀態列下拉後的顯示佈局以及點選通知後的跳轉
		Intent Noticeintent = new Intent(context,NotificationActivity.class);
		PendingIntent pintent = PendingIntent.getActivity(context, 0, Noticeintent, 0);
		notification.setLatestEventInfo(context, "標題", "內容", pintent);
		
		//設定震動
		long[] l = new long[]{0,1000,1000,1000,1000,1000};
		notification.vibrate = l;
		//設定聲音
		Uri soundUri = Uri.parse("android.resource://"+context.getPackageName()+"/"+R.raw.mysound);
		notification.sound = soundUri;
		
		//傳送通知
		manager.notify(1, notification);


相關推薦

Android 通知(Notification)初級用法和注意事項

前言   Android通知欄,相對來說也是開發中的一項常用功能,其實相關的文章非常之多,但是對於其中的細節或者問題的整理並非那麼清晰,以下便是自己在使用過程中的整理,希望對開發者能發揮一點作用. Notofication 構建例項 // 構建通知的例項

Android 通知Notification 詳解

作者:登天路 轉載請說明出處:http://www.cnblogs.com/travellife/ GitPages:http://www.littlejie.com/   Android Notification 詳解 前幾天專案中有用到 Android 通知相關的內容,索性

Android通知Notification的使用

我們經常可以在Android手機中下拉狀態列時可以看到有許多的推送通知,Android中專門提供了Notification來實現這種效果,如下: Notification的基本使用: 建立一

android 通知Notification的使用小例項(振動,燈光,聲音)

效果圖: MainActivity: import java.io.File; import android.app.Activity; import android.app.Notification; import android.a

Android通知(Notification)的使用

Notification 的基本操作主要有建立、更新、取消這三種。一個 Notification 的必要屬性有三項,如果不設定則在執行時會丟擲異常:1.小圖示,通過 setSmallIcon() 方法設定2.標題,通過 setContentTitle() 方法設定3.內容,通過 setContentText(

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

       通知(Notification)是 Android 系統中比較有特色的一個功能,當某個應用程式希望向使用者發出一些提示資訊,而該應用程式又不在前臺執行時,就可以藉助通知來實現。發出一條通知後,手機最上方的狀態列中會顯示一個通知的圖示,下拉狀態列後可以看到通知的

Android 通知(Notification)

eat src ima 介紹 後臺 cti pack ati 題目 1.介紹 2.常用屬性 3.java後臺代碼 package com.lucky.test30notification; import android.app.Notificatio

Android學習筆記 五四 通知Notification

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android學習筆記8-使用通知(Notification)

Android學習筆記8-使用通知(Notification) 1.Notification簡介 通知是Android系統的一種特色的功能,當某個app希望給使用者提示資訊,但是該app又不在執行在前臺時,就可以利用通知。 傳送一條通知後,手機上方的狀態列就會顯示一個小圖示,

Android學習筆記(五五) 通知Notification(下)

Notification除了用於後臺服務通知,還常用在下面情況:(1)保持服務存在。當系統記憶體不足時,系統會認為某後臺服務佔用記憶體時間太長而中止該服務,以釋放記憶體。對於某些服務,例如播放音樂,如果系統對該服務進行資源釋放,使用者體驗就成了音樂突然沒有聲音。對這類服務,我們希望享有更高的優先級別,不會被系

Android通知Notification

通知: 普通廣播 自定義廣播 大檢視廣播 普通通知: 通知初始化:new NotificationCompat.Builder(this); 設定標題:builder.setContentTitle() 設定內容:builder.setConten

Android 提示 Notification 通知

/** * 建立通知 * @param tickerText 來通知時的提示內容 * @param title 通知標題(下拉後顯示) * @param content 通知內容(下拉後顯示) * @param drawable 通知圖示 * @param cl

android點選系統通知Notification,進入指定的activity

// 建立一個NotificationManager的引用 NotificationManager notificationManager = (NotificationManager) this.getSystemS

android 使用Notification彈多個通知時,點選跳轉intent取值時總是最後一個

最近開發中模組功能,使用NotificationManager觸發多個Notification: private void showIMNotification(Context context, String ticker, Bitmap defaultBitmap

Android基礎_通知(Notification)

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

Android的狀態列通知(Notification)

通知用於在狀態列顯示訊息,訊息到來時以圖示方式表示,如下: 如果需要檢視訊息,可以拖動狀態列到螢幕下方即可檢視訊息. 1、Layout佈局檔案: <RelativeLayout xmlns:android="http://schemas.android.com/ap

Android】狀態列通知Notification、NotificationManager詳解

在Android系統中,發一個狀態列通知還是很方便的。下面我們就來看一下,怎麼傳送狀態列通知,狀態列通知又有哪些引數可以設定? 首先,傳送一個狀態列通知必須用到兩個類:  NotificationManager 、 Notification。 NotificationM

Android 建立通知Notification,並返回到主頁面的那些事

自Android  6.0以後,Google對通知的使用進行了一些改變,它移除了之前 Notification.setLatestEventInfo()  方法。改用 Notification.Builder 類來構建通知,並且要重複更新通知,只需要重複使用 Notifica

android之【本地通知Notification

public class NotificationTest extends Activity { static final int NOTIFICATION_ID = 0x1123; @Override public void onCreate(Bundle save

android通知欄的訊息通知(Notification)

轉載請註明出處: 在開發中經常會用到推送給使用者通知、訊息等的情況,今天就跟大家一起來學習推送訊息時通知欄的通知Notification。 通知欄訊息通知的使用步驟 一般可以分為以下步驟: 1. 首先需要一個NotificationManag