Android的Toast 類提供了一個(gè)方便的方式來顯示用戶的警告信息,但這些警告不是持久性的,這意味著警告閃爍在屏幕上幾秒鐘后就消失了。
對于特別重要的要提供給用戶的消息,需要有更持久性的方法。 Anotification是一種消息可以顯示在設(shè)備的頂部的通知欄或狀態(tài)欄中。
要看到通知的細(xì)節(jié),選擇圖標(biāo)顯示通知抽屜里有詳細(xì)的有關(guān)通知。模擬器虛擬設(shè)備工作,按一下向下拖動狀態(tài)欄將它展開,將顯示詳細(xì)信息如下。這將是64 sp高的普通視圖。
上述擴(kuò)大的形式可以放到一個(gè)大的視圖,有關(guān)通知的更多細(xì)節(jié)??梢蕴砑幼疃嗔械耐ㄖ?。下面的截圖顯示了這樣的通知。
使用簡單的方法來創(chuàng)建一個(gè)通知。按照以下步驟在應(yīng)用程序創(chuàng)建一個(gè)通知:
作為第一步創(chuàng)建一個(gè)通知構(gòu)造器,使用NotificationCompat.Builder.build()。使用通知Builder來設(shè)置屬性,如各種通知其小型和大型圖標(biāo),標(biāo)題,優(yōu)先級等。
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
在創(chuàng)建Builder對象之后,可以按要求使用生成器創(chuàng)建通知對象。這是強(qiáng)制性的,以至少下列設(shè)置:
一個(gè)小圖標(biāo),由 setSmallIcon() 設(shè)置
一個(gè)標(biāo)題,由setContentTitle() 設(shè)置
詳細(xì)內(nèi)容由 setContentText() 設(shè)置
mBuilder.setSmallIcon(R.drawable.notification_icon); mBuilder.setContentTitle("Notification Alert, Click Me!"); mBuilder.setContentText("Hi, This is Android Notification Detail!");
通知有很多可選的屬性,可以設(shè)置。要更多地了解它們,請參考 NotificationCompat.Builder 文檔。
這是一個(gè)可選的部分,并要求如果要附加一個(gè)動作的通知。動作可以讓用戶直接從通知到應(yīng)用程序中的活動,在那里它們可以在一個(gè)或多個(gè)事件,或做進(jìn)一步的工作。
動作定義通過PendingIntent 在應(yīng)用程序中的活動意圖。要關(guān)聯(lián)PendingIntent 手勢請調(diào)用適當(dāng)NotificationCompat.Builder 方法。例如,如果想開始活動,當(dāng)用戶點(diǎn)擊通知文本通知抽屜 PendingIntent 調(diào)用setContentIntent()。
PendingIntent對象表示應(yīng)用程序的執(zhí)行一個(gè)動作,在以后的時(shí)間里查看應(yīng)用程序是否正在運(yùn)行。
堆棧builder對象將包含一個(gè)人工后退堆棧活動。確保向后導(dǎo)航的活動在應(yīng)用程序的主屏幕。
Intent resultIntent = new Intent(this, ResultActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); stackBuilder.addParentStack(ResultActivity.class); // Adds the Intent that starts the Activity to the top of the stack stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent( 0, PendingIntent.FLAG_UPDATE_CURRENT ); mBuilder.setContentIntent(resultPendingIntent);
最后,調(diào)用NotificationManager.notify() 發(fā)送通知,通知對象傳遞到系統(tǒng)。通知之前,確保調(diào)用NotificationCompat.Builder.build()方法生成器對象。這種方法結(jié)合了所有的選擇,設(shè)置并返回一個(gè)新的Notificationobject。
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // notificationID allows you to update the notification later on. mNotificationManager.notify(notificationID, mBuilder.build());
NotificationCompat.Builder類可以更容易控制標(biāo)志,以及幫助構(gòu)建典型通知布局。以下是 NotificationCompat.Builder類的一些重要的和最常用的方法的一部分。
S.N. | 常量& 描述 |
---|---|
1 |
Notification build() 結(jié)合所有已設(shè)置的選項(xiàng),并返回一個(gè)新的 Notification 對象 |
2 |
NotificationCompat.Builder setAutoCancel (boolean autoCancel) 設(shè)置此標(biāo)志將使它以便當(dāng)用戶點(diǎn)擊它在面板中的通知被自動取消 |
3 |
NotificationCompat.Builder setContent (RemoteViews views) 提供定制RemoteViews使用來代替標(biāo)準(zhǔn)之一 |
4 |
NotificationCompat.Builder setContentInfo (CharSequence info) 設(shè)置大文本的通知的右側(cè) |
5 |
NotificationCompat.Builder setContentIntent (PendingIntent intent) 提供一個(gè)PendingIntent通知被點(diǎn)擊時(shí)發(fā)出 |
6 |
NotificationCompat.Builder setContentText (CharSequence text) 設(shè)置通知的文本(第二行),在一個(gè)標(biāo)準(zhǔn)的通知 |
7 |
NotificationCompat.Builder setContentTitle (CharSequence title) 設(shè)置通知的文本(第一行),在一個(gè)標(biāo)準(zhǔn)的通知 |
8 |
NotificationCompat.Builder setDefaults (int defaults) 設(shè)置將要使用的默認(rèn)通知選項(xiàng) |
9 |
NotificationCompat.Builder setLargeIcon (Bitmap icon) 設(shè)置顯示在自動收報(bào)機(jī)和通知大圖標(biāo) |
10 |
NotificationCompat.Builder setNumber (int number) 在通知的右側(cè)設(shè)置大的數(shù)字 |
11 |
NotificationCompat.Builder setOngoing (boolean ongoing) 設(shè)置這是否是一個(gè)持續(xù)的通知 |
12 |
NotificationCompat.Builder setSmallIcon (int icon) 設(shè)置小圖標(biāo)在通知使用布局 |
13 |
NotificationCompat.Builder setStyle (NotificationCompat.Style style) 在構(gòu)建時(shí)應(yīng)用添加豐富的通知樣式 |
14 |
NotificationCompat.Builder setTicker (CharSequence tickerText) 設(shè)置在第一個(gè)通知到達(dá)時(shí)顯示在狀態(tài)欄中的文本 |
15 |
NotificationCompat.Builder setVibrate (long[] pattern) 設(shè)置振動模式的使用 |
16 |
NotificationCompat.Builder setWhen (long when) 設(shè)置該事件發(fā)生的時(shí)間。在面板的通知是由這個(gè)時(shí)間進(jìn)行排序 |
以下示例顯示 Android 的通知功能,NotificationCompat.Builder類已在Android4.1中引入。
步驟 | 描述 |
---|---|
1 | 使用Android Studio創(chuàng)建一個(gè)Android應(yīng)用程序,并將它命名為:NotificationDemounder。在創(chuàng)建這個(gè)項(xiàng)目時(shí)確保目標(biāo)SDK和編譯在Android SDK的最新版本或更高級別的API。 |
2 | 修改 src/MainActivity.java 文件,并添加定義三種方法startNotification(),cancelNotification()和updateNotification(),以涵蓋與Android的通知的最大功能的代碼。 |
3 | 創(chuàng)建一個(gè)新的src/NotificationView.java,這將被用于顯示新的布局作為新的活動將被啟動的一部分,當(dāng)用戶將點(diǎn)擊通知 |
4 | 復(fù)制圖片woman.png在RES/ drawable-*文件夾,這個(gè)圖片將被用作通知圖標(biāo)??梢允褂玫那闆r下,要為他們提供了不同的設(shè)備有不同的分辨率的圖片 |
5 | 修改布局XML文件 res/layout/activity_main.xml 添加三個(gè)按鈕的線性布局 |
6 | 創(chuàng)建一個(gè)新的布局XML文件 res/layout/notification.xml。這將被用來作為布局文件為新的活動,將啟動時(shí)用戶將點(diǎn)擊任何通知 |
7 | 修改 res/values/strings.xml 中定義所需的恒定值 |
8 | 運(yùn)行該應(yīng)用程序時(shí)啟動Android模擬器并驗(yàn)證應(yīng)用程序所做的修改結(jié)果 |
以下是修改主要活動文件src/com.yiibai.notificationdemo/MainActivity.java 的內(nèi)容。這個(gè)文件可以包括每個(gè)生命周期基本方法。
package com.example.notificationdemo; import android.os.Bundle; import android.app.Activity; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.TaskStackBuilder; import android.content.Context; import android.content.Intent; import android.support.v4.app.NotificationCompat; import android.util.Log; import android.view.View; import android.widget.Button; public class上一篇:Android圖片切換下一篇:Android音頻管理器實(shí)例