Notification應(yīng)用

最基本的通知

NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext);
builder.setContentTitle("notification")
       .setContentText("this is content")
       .setSmallIcon(R.mipmap.ic_launcher);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(NOTIFICATION_ID,buidler.build());

說明

  • 通常會選擇用NotificationCompat來構(gòu)建一個通知,以保證兼容性禽炬。
  • 一個通知必須為其設(shè)置上面的三個屬性涧卵。但是我們自己通過ReomteViews來自定義通知布局時,可以不用設(shè)置前兩個屬性腹尖,但是必須setSmallIcon柳恐。
  • NotificationManager有兩個nofify()方法.notify(int id, Notification notification) ,notify(String tag, int id, Notification notification),其中tag和id用來唯一標(biāo)識一個通知。

一般混合通知

下面這個通知是一個長文本通知热幔。包括兩個按鈕乐设,并且可以響應(yīng)用戶點擊事件。內(nèi)容比較雜绎巨。

NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/"));
PendingIntent pendingIntent = PendingIntent.getActivity(mContext,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
Intent sendMessage = new Intent(Intent.ACTION_VIEW,Uri.parse("sms:10086"));
PendingIntent smpd = PendingIntent.getActivity(mContext,0,sendMessage,PendingIntent.FLAG_UPDATE_CURRENT);
// 為通知設(shè)置長文本樣式
android.support.v4.app.NotificationCompat.BigTextStyle style = new android.support.v4.app.NotificationCompat.BigTextStyle();
style.bigText(getResources().getString(R.string.note_text));
style.setSummaryText("English Text");
builder.setContentTitle("notification")
       .setContentText("this is content")
       .setSmallIcon(R.drawable.github)
       .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.github))
       .setTicker("hello")
       .setDefaults(Notification.DEFAULT_ALL)
       .setSound(Uri.parse("android:resource://" + context.getPackageName() + "/" + R.raw.msg))
       .setAutoCancel(true)
       .setContentIntent(pendingIntent)
       .setPriority(Notification.PRIORITY_MAX)
       .setStyle(style)
       .addAction(R.drawable.accept,"send",smpd)
       .addAction(R.drawable.decline,"cancel",null);
Notification notification = builder.build();
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(NOTIFICATION_ID,buidler.build());

說明

  • 通過PendingIntent來包裝Intent近尚,然后調(diào)用builder的setContentIntent方法把PendingIntent傳進(jìn)去,響應(yīng)用戶的點擊事件。
  • 通過setStyle來設(shè)置通知的樣式场勤。例如可以設(shè)置BigTextStyle,還可以設(shè)值MediaStyle戈锻。
  • 通過addAction方法來給通知添加按鈕,并設(shè)值響應(yīng)事件和媳。

帶進(jìn)度條的通知

final NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext);
final NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
builder.setContentTitle("Downloading")
       .setSmallIcon(R.mipmap.ic_launcher);
new Thread(new Runnable() {
    @Override
    public void run() {
      for (int i =0;i<100;i+=10){
      // 第三個參數(shù)如果設(shè)置為true,則不會顯示精確的進(jìn)度格遭。
      builder.setProgress(100,i,false);
      manager.notify(NOTIFICATION_ID,builder.build());
      try {
            // 模擬下載
            Thread.sleep(3000);
          } catch (InterruptedException e) {
              e.printStackTrace();
            }
          }
  builder.setContentText("Complete")
      // 取消進(jìn)度條
       .setProgress(0,0,false);
  manager.notify(NOTIFICATION_ID,builder.build());
  }
}).start();

自定義布局通知

自定義布局同時主要是通過ReomteViews來實現(xiàn).

NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext);  
// 為RemotViews設(shè)置一個布局,這個布局需要自己在layout中實現(xiàn)窗价。
RemoteViews remoteViews = new RemoteViews(getPackageName(),R.layout.notification);
remoteViews.setTextViewText(R.id.text,"notification");
remoteViews.setImageViewResource(R.id.image,R.drawable.git);
builder.setSmallIcon(R.drawable.github);  
// 將RemoteViews設(shè)置到通知中
builder.setContent(remoteViews);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(NOTIFICATION_ID,builder.build());

補充

  • RemoteViews是一個可以運行在其他進(jìn)程中的View如庭。通知是運行在系統(tǒng)進(jìn)程的叹卷。
  • 如果需要為RemoteViews中的子View設(shè)置響應(yīng)事件撼港,可以通過remoteViews.setOnClickPendingIntent方法實現(xiàn)坪它。
  • 上面通知的RemoteViews中有個TextView,如果要為它設(shè)置樣式,可以在xml文件里添加一句android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title"帝牡,這樣它的樣式就和系統(tǒng)一致了往毡。

懸掛式通知

通知有五種優(yōu)先級,范圍從 PRIORITY_MIN (-2) 到 PRIORITY_MAX (2)靶溜,如果未設(shè)置开瞭,則優(yōu)先級默認(rèn)為 PRIORITY_DEFAULT (0)。
通過NotificationCompat.Builder.setPriority()來為通知設(shè)置優(yōu)先級罩息。當(dāng)優(yōu)先級大于默認(rèn)的時候時嗤详,通知都可以在其他應(yīng)用的上面,顯示一個頂部懸掛的通知瓷炮。

通知的等級

通知的等級有三個

  • VISIBILITY_PRIVATE, 表明當(dāng)前通知只有在沒有鎖屏的時候才會顯示葱色。
  • VISIBILITY_PUBLIC, 任何情況下都可以顯示。
  • VISIBILITY_SECRET, 在沒有鎖屏的情況下才會顯示娘香。

通過NotificationCompat.Builder.setVisibility(VISIBILITY_PUBLIC),可以讓通知在鎖屏界面上顯示苍狰。
通過NotificationCompat.Builder.setCategory(Notification.CATEGORY_MESSAGE),可以控制通知的位置。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烘绽,一起剝皮案震驚了整個濱河市淋昭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌安接,老刑警劉巖翔忽,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赫段,居然都是意外死亡呀打,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門糯笙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贬丛,“玉大人,你說我怎么就攤上這事给涕〔蜚荆” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵够庙,是天一觀的道長恭应。 經(jīng)常有香客問我,道長耘眨,這世上最難降的妖魔是什么昼榛? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮剔难,結(jié)果婚禮上胆屿,老公的妹妹穿的比我還像新娘奥喻。我一直安慰自己,他們只是感情好非迹,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布环鲤。 她就那樣靜靜地躺著,像睡著了一般憎兽。 火紅的嫁衣襯著肌膚如雪冷离。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天纯命,我揣著相機與錄音西剥,去河邊找鬼。 笑死亿汞,一個胖子當(dāng)著我的面吹牛蔫耽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播留夜,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼匙铡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了碍粥?” 一聲冷哼從身側(cè)響起鳖眼,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嚼摩,沒想到半個月后钦讳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡枕面,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年愿卒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潮秘。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡琼开,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出枕荞,到底是詐尸還是另有隱情柜候,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布躏精,位于F島的核電站渣刷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏矗烛。R本人自食惡果不足惜辅柴,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碌嘀,春花似錦碾篡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牡拇。三九已至魁瞪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惠呼,已是汗流浹背导俘。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留剔蹋,地道東北人旅薄。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像泣崩,于是被迫代替她去往敵國和親少梁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 原文出處: http://www.androidchina.net/6174.html Notification在...
    木木00閱讀 12,296評論 3 32
  • Notification可以讓我們在獲得消息的時候矫付,在狀態(tài)欄凯沪,鎖屏界面來顯示相應(yīng)的信息,很難想象如果沒有Notif...
    劉望舒閱讀 1,947評論 4 16
  • 一买优、什么是Notification? Notification是一種有全局效果的通知妨马,可以顯示在系統(tǒng)通知欄。以下內(nèi)...
    douhao1333閱讀 726評論 0 1
  • 最近時不時地有人問我這樣或那樣的通知如何實現(xiàn)杀赢,所以本文將根據(jù)個人經(jīng)驗對Notification做個總結(jié)烘跺,以供參考!...
    ConnorLin閱讀 35,930評論 27 99
  • 春節(jié)怎么陪孩子玩脂崔?寒假大面積的時間里陪孩子如何高效利用滤淳,除了陪著玩以外,怎么打發(fā)砌左?我想著何不讓孩子來涂寫畫畫娇钱。 作...
    平平無奇小個子閱讀 558評論 0 0