Android開發——Notification通知的使用及NotificationCopat.Builder常用設置API

来源:https://www.cnblogs.com/kexing/archive/2018/01/29/8368244.html
-Advertisement-
Play Games

想要看全部設置的請看這一篇 【轉】NotificationCopat.Builder全部設置 常用設置: 設置屬性 說明 setAutoCancel(boolean autocancel) 設置點擊信息後自動清除通知 setContent(RemoteView view) 設置自定義通知 setCo ...


想要看全部設置的請看這一篇 【轉】NotificationCopat.Builder全部設置

常用設置:

 

設置屬性

說明

setAutoCancel(boolean autocancel)

設置點擊信息後自動清除通知

setContent(RemoteView view)

設置自定義通知

setContentTitle(String string)

設置標題

setContentText(String string)

設置內容

SetContentIntent(PendingIntent intent)

設置點擊信息後的跳轉(意圖)

setWhen(long when)

設置時間

setPriority(int pri)

設置通知的重要程度

setStyle(Style style)

設置樣式

setVisibility(int visibility)

設置鎖屏顯示

setDefault(int defaults)

設置預設

setLight(int argb, int onMs, int offMs)

設置呼吸燈閃爍效果

setSound(Uri sound)

設置通知音效

setVibrate(long [] pattern)

設置震動效果

setCategory(String category)

設置通知類別

setColor(int argb)

設置通知欄顏色

setFullScreenIntent(PendingIntent intent,boolean b)

設置彈窗顯示

簡單步驟說明:

創建一個notification,需要NotificationManager(這是一個系統的服務類,由名字很容易知道是用來管理Notification通知類的)和Notification(通知類)

Notification創建類似Dialog的創建,通過Notification類中提供的各種方法來設置屬性,最後build方法生成

NotificationManger的實例可以通過getSystemService這個方法獲得

PendingIntent與Intent有關係,這是一個延遲意圖,可以通過調用getActivity,getBroadcastReceiver,getService三個方法獲得實例

 

普通使用:


NotificationCompat.Builder自動設置的預設值:

    priority: PRIORITY_DEFAULT //通知的重要程度
    when: System.currentTimeMillis() //時間
    audio stream: STREAM_DEFAULT //音效 系統預設音效

上面的這三個我們一般情況下可以不用設置,系統會自動幫我們設置

下麵就是一個簡單的使用,設置了標題,內容,小圖標,點擊通知欄的該信息會跳轉到main2Activity中,具體可以看註釋,之後由這個普通使用的通知作為基礎講解NotificationCopat.Builder中的其他設置


Intent intent = new Intent(this,Main2Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationManager manger = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is cotenttitle")//設置標題,必要
.setContentText("contentText")//設置內容,必要
.setWhen(System.currentTimeMillis())//設置時間,預設設置,可以忽略
.setSmallIcon(R.mipmap.ic_launcher)//設置通知欄的小圖標,必須設置
.setAutoCancel(true)//設置自動刪除,點擊通知欄信息之後系統會自動將狀態欄的通知刪除,要與setContentIntent連用
.setContentIntent(pendingIntent)//設置在通知欄中點擊該信息之後的跳轉,參數是一個pendingIntent
     
.build();
     manger.notify(1,notification);//id為1

setLargeIcon

Intent  intent = new Intent(this,Main2Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationManager manger = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is cotenttitle")//設置標題,必要
.setContentText("contentText")//設置內容,必要
.setWhen(System.currentTimeMillis())//設置時間,預設設置,可以忽略
.setSmallIcon(R.mipmap.ic_launcher)//設置通知欄的小圖標,必須設置
.setAutoCancel(true)//設置自動刪除,點擊通知欄信息之後系統會自動將狀態欄的通知刪除
.setContentIntent(pendingIntent)//設置在通知欄中點擊該信息之後的跳轉,參數是一個pendingIntent
     .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
     //設置大圖標,未設置時使用小圖標代替,拉下通知欄顯示的那個圖標
     //設置大圖片 BitmpFactory.decodeResource(Resource res,int id) 根據給定的資源Id解析成點陣圖
     .build();
     manger.notify(1,notification);

setPriority實現彈窗信息


Intent  intent = new Intent(this,Main2Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationManager manger = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is cotenttitle")//設置標題,必要
.setContentText("contentText")//設置內容,必要
.setWhen(System.currentTimeMillis())//設置時間,預設設置,可以忽略
.setSmallIcon(R.mipmap.ic_launcher)//設置通知欄的小圖標,必須設置
.setAutoCancel(true)//設置自動刪除,點擊通知欄信息之後系統會自動將狀態欄的通知刪除
.setContentIntent(pendingIntent)//設置在通知欄中點擊該信息之後的跳轉,參數是一個pendingIntent
     .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
     //設置大圖標,未設置時使用小圖標代替,拉下通知欄顯示的那個圖標
     //設置大圖片 BitmpFactory.decodeResource(Resource res,int id) 根據給定的資源Id解析成點陣圖
     .setPriority(NotificationCompat.PRIORITY_MAX) //設置為最高重要程度
     .setDefaults(NotificationCompat.DEFAULT_SOUND)//設置音效為預設
     .build();
     manger.notify(1,notification);
 

由於只有一條信息,我們可能看不出最高重要程度的區別,但是,我們如果再設置音效或者震動,那麼這條通知就會彈窗顯示

實現彈窗顯示的兩種方法:一,當重要程度為最高,且設置了音效或者是震動 ;二,調用setFullScreenIntent()

setFullScreenIntent


Intent  intent = new Intent(this,Main2Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationManager manger = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is cotenttitle")//設置標題,必要
.setContentText("contentText")//設置內容,必要
.setWhen(System.currentTimeMillis())//設置時間,預設設置,可以忽略
.setSmallIcon(R.mipmap.ic_launcher)//設置通知欄的小圖標,必須設置
.setAutoCancel(true)//設置自動刪除,點擊通知欄信息之後系統會自動將狀態欄的通知刪除
.setContentIntent(pendingIntent)//設置在通知欄中點擊該信息之後的跳轉,參數是一個pendingIntent
     .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
     //設置大圖標,未設置時使用小圖標代替,拉下通知欄顯示的那個圖標
     //設置大圖片 BitmpFactory.decodeResource(Resource res,int id) 根據給定的資源Id解析成點陣圖
     .setFullScreenIntent(pendingIntent,false)
     .build();
     manger.notify(1,notification);
 

 圖片與之前那張一樣,我就不放出來了,值得說的是這個方法的第二個參數,為什麼是false呢,如果是true的話,當你在玩游戲的時候,屏幕是全屏,然後這條通知就不需要點擊,直接就會跳轉到某個界面去,除非是來電了才會用true,其他情況若是使用的話,用戶估計直接卸載APP

setDefault

之前也是使用了這個設置與setPriority連用實現了彈窗消息,簡單解釋,這個可以設置音效,震動和呼吸燈的預設效果,也可以單獨設置某個的預設,之前我就是單獨設置了音效的預設

有四個參數可以選擇,由英文也可以看出是什麼意思了吧,這裡就不多解釋了

setStyle

      這裡我就簡單地說兩種,長文本顯示和大圖片顯示,更多的請看這一篇Android開發——Notification通知的各種Style詳解

  一、BigTextStyle   長文本顯示

 
Intent  intent = new Intent(this,Main2Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationManager manger = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is cotenttitle")//設置標題,必要
.setContentText("contentText")//設置內容,必要
.setWhen(System.currentTimeMillis())//設置時間,預設設置,可以忽略
.setSmallIcon(R.mipmap.ic_launcher)//設置通知欄的小圖標,必須設置
.setAutoCancel(true)//設置自動刪除,點擊通知欄信息之後系統會自動將狀態欄的通知刪除
.setContentIntent(pendingIntent)//設置在通知欄中點擊該信息之後的跳轉,參數是一個pendingIntent
     .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
     //設置大圖標,未設置時使用小圖標代替,拉下通知欄顯示的那個圖標
     //設置大圖片 BitmpFactory.decodeResource(Resource res,int id) 根據給定的資源Id解析成位
     .setStyle(new NotificationCompat.BigTextStyle().bigText("長內容長內容長內容長內容長內容長內容長內容長內容長內容長內容長
內容長內容長內容長內容長內容長內容長內容長內容長內容長內容"))

     .build();
     manger.notify(1,notification);
	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • date類型是oracle中存儲日期類的一種常用類型,其處理也是在資料庫使用中比較多需要註意的地方。如我們可以使用to_char函數將其轉化為任意時間格式的字元串,也可使用to_date函數轉化相應的字元串為日期格式。 本篇主要介紹這樣一種使用情況。 問題描述:欄位保存為帶有時分秒格式的日期形式,現 ...
  • 1.複製表結構及數據到新表 CREATE TABLE 新表 SELECT * FROM 舊表 2.只複製表結構到新表 CREATE TABLE 新表 SELECT * FROM 舊表 WHERE 1=2 即:讓WHERE條件不成立. 方法二:(由tianshibao提供) CREATE TABLE  ...
  • 聚合函數是對一組值執行計算並返回單一的值的函數,它經常與SELECT語句的GROUP BY子句一同使用,SQL SERVER 中具體的聚合函數如下:1. AVG 返回指定組中的平均值,空值被忽略。 例:select prd_no,avg(qty) from sales group by prd_no ...
  • 一、列表解析式 列表解析是外面一對中括弧,它返回的是列表。 一般形式為:[expr for item in itratoble] filter()方法接受一個函數和一個可迭代對象兩個參數,返回一個生成器對象。 map()方法接受一個函數和一個可迭代對象兩個參數,返回一個列表。 列表解析式的執行速度比 ...
  • 1、對錶中數據的增刪改(DML) create table t_user( id int primary key auto_increment, name varchar(20) not null, email varchar(20) unique ) 為表添加記錄 (必須掌握) insert in ...
  • 欄位 一個模型最重要也是唯一必需的部分,是它定義的資料庫欄位 欄位名稱限制 1、欄位名不能是python保留字,這樣會導致python語法錯誤 2、欄位不能包含連續一個以上的下劃線,這樣會和Django查詢語句語法衝突 通用欄位選項 null 如果設置為 True 的話,Django將在資料庫中存儲 ...
  • 一,微信是由騰訊公司廣州研發中心產品團隊開發,該團隊經理張小龍被稱為“微信之父”,公司總裁馬化騰確定該產品名稱為“微信”。 二,常見問題及解決方案。 1,請求URL超時。 這種情況一般是由於伺服器網速或響應速度太慢。可以重試幾次或者等一段時間再來試,如果還是這樣,則需要考慮更換速度更快,性能更好的服 ...
  • 本來是想與之前講解使用Notification通知使用一起寫的,查看了資料,覺得有必要將這Style部分單獨拿出來講解 前篇:Android開發——Notification通知的使用及NotificationCopat.Builder常用設置API 上一篇中也是介紹了兩種常用的Style,這一篇算是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...