notification基本用法(一)

通知(Notification)是在下拉狀態欄顯示的信息,就像~~推送,簡單介紹下notification

首先,它需要一個管理者,就是NotificationManager,可以用如下方式獲取:

NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

然後,我們來獲取Notification對象,有一個三個參數的Notification構造函數(貌似已經被拋棄,但是還可用,改成類似對話框的那種用Builder,具體以後研究下再更新),例如

Notification notification = new Notification(R.drawable.ic_launcher,"oh my god",System.currentTimeMillis());

第一個參數(int):icon,就是通知顯示的圖標id

第二個參數(CharSequence):給個字符串,當有通知時狀態欄會顯示的內容

第三個參數(long):通知創建的時間,單位毫秒

完成之後我們對通知的內容進行設置

notification.setLatestEventInfo(context,title,content,pendingIntent);

context就是上下文了,title則是通知的標題,content是內容(注意這是狀態欄下拉後顯示的,和構造函數的第二個參數顯示的位置是不同的),至於pendingIntent在這裏不多解釋,不瞭解的可以百度下,它的參數中有個flag我查了下大神的解釋,大概是這樣的:

FLAG_CANCEL_CURRENT:如果當前系統中已經存在一個相同的PendingIntent對象,那麼就將先將已有的PendingIntent取消,然後重新生成一個PendingIntent對象。
FLAG_NO_CREATE:如果當前系統中不存在相同的PendingIntent對象,系統將不會創建該PendingIntent對象而是直接返回null。
LAG_ONE_SHOT:該PendingIntent只作用一次。在該PendingIntent對象通過send()方法觸發過後,PendingIntent將自動調用cancel()進行銷燬,那麼如果你再調用send() 方法的話,系統將會返回一個SendIntentException。
FLAG_UPDATE_CURRENT:如果系統中有一個和你描述的PendingIntent對等的PendingInent,那麼系統將使用該PendingIntent對象,但是會使用新的Intent來更新之前 PendingIntent中的Intent對象數據,例如更新Intent中的Extras。

給上代碼

Intent intent = new Intent(this,SecondActivity.class);

PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);

notification.setLatestEventInfo(context,“my title“,“my content“,pendingIntent);

這樣就實現了點擊通知後會跳到SecondActivity

最後調用notify就可以了

notificationManager.notify(3,notification);

3是這個通知的id,當我們要用cancel方法幹掉這個通知的時候需要作爲參數傳進去,像notificationManager.cancel(3);

這樣一個簡單的通知就實現了,還有一些我們可能會經常用到的,像通知的聲音,震動,LED燈閃爍等等,也簡單說一說

我們在得到notification對象之後可以按自己的意願設置很多東西,如果都不想管可以設置爲默認,即

notification.defaults = Notification.FLAG_DEFAULT_ALL;

設置振動需要一個long數組,其中奇數位是不震動時長(ms),偶數位是震動時長,當狀態欄被下拉會終止振動

long[] mVibrate = {0,1000,2000,3000};

像上面這句,0代表停0s,即發出通知會馬上振動,1000則爲振動1s,2000爲停止振動2s,3000爲振動3s...以此類推

notification.vibrate = mVibrate;

設置好之後需要加上權限<uses-permission android:name="android.permission.VIBRATE"/>

設置聲音需要uri,可以這樣

Uri uri = Uri.fromFile("聲音文件路徑");或者Uri.parse("路徑"):

notification.sound = uri;

還有LED,這個東西在我手機上試了好像並沒什麼效果,所以...

notification.ledARGB = Color.RED;

notification.ledOnMs = 1000;

notification.ledOffMs = 2000;

notification.flags = Notification.FLAG_SHOW_LIGHTS;

上面代碼是讓紅色led燈亮1s然後暗2s這樣閃

目前就學習了這麼多,等學習到新知識會及時跟大家分享的,寫的不太細,感謝大家看完微笑

發佈了36 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章