編輯:關於android開發
下面來談談notification,這個notification一般用在電話,短 信,郵件,鬧鐘鈴聲,在手機的狀態欄上就會出現一個小圖標,提示用戶處理這個通知,這時手從上方滑動狀態欄就可以展開並處理這個快訊。已添加的 Notification.Builder,使其更容易構建通知。notification是一種讓你的應用程序在沒有開啟情況下或在後台運行警示用戶。 它是看不見的程序組件(Broadcast Receiver,Service和不活躍的Activity)警示用戶有需要注意的事件發生的最好途徑。
先來區分以下狀態欄和狀態條的區別:
1、狀態條就是手機屏幕最上方的一個條形狀的區域;
在狀態條有好多信息量:比如usb連接圖標,手機信號圖標,電池電量圖標,時間圖標等等;
2、狀態欄就是手從狀態條滑下來的可以伸縮的view;
在狀態欄中一般有兩類(使用FLAG_標記):
(1)正在進行的程序;
(2)是通知事件;
快速創建一個Notification的步驟簡單可以分為以下四步:
第一步:通過getSystemService()方法得到NotificationManager對象;
1.
nManager = (NotificationManager)
this
.getSystemService(service);
第二步:對Notification的一些屬性進行設置比如:內容,圖標,標題,相應notification的動作進行處理等等;
01.
notification.icon = R.drawable.ic_launcher;
// 設置通知的圖標
02.
notification.tickerText = tickerText;
// 顯示在狀態欄中的文字
03.
notification.when = when;
// 設置來通知時的時間
04.
notification.sound = Uri.parse(
"android.resource://com.sun.alex/raw/dida"
); // 自定義聲音
05.
notification.flags = Notification.FLAG_NO_CLEAR;
// 點擊清除按鈕時就會清除消息通知,但是點擊通知欄的通知時不會消失
06.
notification.flags = Notification.FLAG_ONGOING_EVENT;
// 點擊清除按鈕不會清除消息通知,可以用來表示在正在運行
07.
notification.flags |= Notification.FLAG_AUTO_CANCEL;
// 點擊清除按鈕或點擊通知後會自動消失
08.
notification.flags |= Notification.FLAG_INSISTENT;
// 一直進行,比如音樂一直播放,知道用戶響應
09.
notification.defaults = Notification.DEFAULT_SOUND;
// 調用系統自帶聲音
10.
notification.defaults = Notification.DEFAULT_VIBRATE;
// 設置默認震動
11.
notification.defaults = Notification.DEFAULT_ALL;
// 設置鈴聲震動
12.
notification.defaults = Notification.DEFAULT_ALL;
// 把所有的屬性設置成默認
第三步:通過NotificationManager對象的notify()方法來執行一個notification的消息;
1.
nManager.notify(ID, notification);
第四步:通過NotificationManager對象的cancel()方法來取消一個notificatioin的消息;
1.
nManager.cancel(ID);
Notification.build構造Notification方法介紹:
void setLatestEventInfo(Context context , CharSequencecontentTitle,CharSequence contentText,PendingIntent contentIntent)
功能: 顯示在拉伸狀態欄中的Notification屬性,點擊後將發送PendingIntent對象
參數: context 上下文環境
contentTitle 狀態欄中的大標題
contentText 狀態欄中的小標題
contentIntent 點擊後將發送PendingIntent對象
說明:要是在Notification中加入圖標,在狀態欄和狀態條中顯示圖標一定要用這個方法,否則報錯!
NotificationManager類的常用方法:
通過獲取系統服務來獲取該對象:
NotificationManager mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE) ;
NotificationManager常用方法介紹:
public void cancelAll() 移除所有通知 (只是針對當前Context下的Notification)
public void cancel(int id) 移除標記為id的通知 (只是針對當前Context下的所有Notification)
public void notify(String tag ,int id, Notification notification) 將通知加入狀態欄, 標簽為tag,標記為id
public void notify(int id, Notification notification) 將通知加入狀態欄,,標記為id
01.
package
com.sun.alex;
02.
03.
import
android.app.Activity;
04.
import
android.app.Notification;
05.
import
android.app.NotificationManager;
06.
import
android.app.PendingIntent;
07.
import
android.content.Intent;
08.
import
android.net.Uri;
09.
import
android.os.Bundle;
10.
import
android.view.View;
11.
import
android.view.View.OnClickListener;
12.
import
android.widget.Button;
13.
14.
public
class
NotificationActivity
extends
Activity {
15.
16.
private
Button sendBtn, cancelBtn;
17.
private
Notification notification;
18.
private
NotificationManager nManager;
19.
private
Intent intent;
20.
private
PendingIntent pIntent;
21.
// Notification的標示ID
22.
private
static
final
int
ID =
1
;
23.
24.
@Override
25.
public
void
onCreate(Bundle savedInstanceState) {
26.
super
.onCreate(savedInstanceState);
27.
setContentView(R.layout.main);
28.
29.
sendBtn = (Button)
this
.findViewById(R.id.send);
30.
cancelBtn = (Button)
this
.findViewById(R.id.cancel);
31.
32.
String service = NOTIFICATION_SERVICE;
33.
nManager = (NotificationManager)
this
.getSystemService(service);
34.
35.
notification =
new
Notification();
36.
String tickerText =
"測試Notifaction"
;
// 通知提示
37.
// 顯示時間
38.
long
when = System.currentTimeMillis();
39.
40.
notification.icon = R.drawable.ic_launcher;
// 設置通知的圖標
41.
notification.tickerText = tickerText;
// 顯示在狀態欄中的文字
42.
notification.when = when;
// 設置來通知時的時間
43.
notification.sound = Uri.parse(
"android.resource://com.sun.alex/raw/dida"
); // 自定義聲音
44.
notification.flags = Notification.FLAG_NO_CLEAR;
// 點擊清除按鈕時就會清除消息通知,但是點擊通知欄的通知時不會消失
45.
notification.flags = Notification.FLAG_ONGOING_EVENT;
// 點擊清除按鈕不會清除消息通知,可以用來表示在正在運行
46.
notification.flags |= Notification.FLAG_AUTO_CANCEL;
// 點擊清除按鈕或點擊通知後會自動消失
47.
notification.flags |= Notification.FLAG_INSISTENT;
// 一直進行,比如音樂一直播放,知道用戶響應
48.
notification.defaults = Notification.DEFAULT_SOUND;
// 調用系統自帶聲音
49.
notification.defaults = Notification.DEFAULT_SOUND;
// 設置默認鈴聲
50.
notification.defaults = Notification.DEFAULT_VIBRATE;
// 設置默認震動
51.
notification.defaults = Notification.DEFAULT_ALL;
// 設置鈴聲震動
52.
notification.defaults = Notification.DEFAULT_ALL;
// 把所有的屬性設置成默認
53.
54.
sendBtn.setOnClickListener(sendClickListener);
55.
cancelBtn.setOnClickListener(cancelClickListener);
56.
}
57.
58.
private
OnClickListener sendClickListener =
new
OnClickListener() {
59.
@Override
60.
public
void
onClick(View v) {
61.
// 單擊通知後會跳轉到NotificationResult類
62.
intent =
new
Intent(NotificationActivity.
this
,
63.
NotificationResult.
class
);
64.
// 獲取PendingIntent,點擊時發送該Intent
65.
pIntent = PendingIntent.getActivity(NotificationActivity.
this
,
0
,
66.
intent,
0
);
67.
// 設置通知的標題和內容
68.
notification.setLatestEventInfo(NotificationActivity.
this
,
"標題"
,
69.
"內容"
, pIntent);
70.
// 發出通知
71.
nManager.notify(ID, notification);
72.
}
73.
};
74.
75.
private
OnClickListener cancelClickListener =
new
OnClickListener() {
76.
@Override
77.
public
void
onClick(View v) {
78.
// 取消通知
79.
nManager.cancel(ID);
80.
}
81.
};
82.
}
源碼分享:http://www.jinhusns.com/Products/Download/?type=xcj
Android軟件開發中為什麼要制作第三方數據庫?在程序中獲取數據的方式無非就是兩種:本地獲取,服務器獲取。如果項目中的數據非常龐大,並且又不能使用
Google Play發布App中遇到"多個APK:版本1未提供給任何設備配置使用。"問題的解決方法,appapk在google play上發布apk
Android7.0 Phone應用源碼分析(三) phone拒接流程分析,android7.0拒接接上篇博文:Android7.0 Phone應用源碼分析(二) pho
Android重構與設計之路,從整理提示對話框彈窗開始,android彈窗 封裝一個獨立彈窗Module,這裡的彈窗包括普通的Dialog方式彈框和WindowMana