Android Notification總結

Android Notification總結

?

目錄[-]

一、通知的主要功能
二、通知簡介
三、通知的使用流程
四、使用NotificationCompat.Builder設置通知的屬性:
五、管理通知

一、通知的主要功能

  1. 顯示接收到短消息、即使消息等信息 (如QQ、微信、新浪、短信等),此類消息一般有多條時會采用摘要的形式顯示,展開則顯示通知詳情;

  2. 顯示客戶端的推送消息(如新版本發布,廣告,推薦新聞等)

  3. 顯示正在進行的事物,一般在通知中顯示進度條,顯示后臺程序運行進度(如音樂播放器、新版本下載進度等)

二、通知簡介

  1. 基本布局:

    1. 普通視圖的通知

    2. BigView視圖的通知(此類通知需要通過setStyle屬性設置,摘要區可以添加自定義的操作)

  2. 相關類:使用通知的時候主要涉及兩個類:Notification 和 NotificationManager(一般為了拓寬通知的適用范圍,推薦使用支持庫中的通知類NotificationCompat和NotificationCompat.Builder)

    1. Notification :通知類,該類中包含通知的各種屬性和方法;一般通過NotificationCompat.Builder設置通知的各個屬性值

    2. NotificationManager:狀態欄通知管理類,該類負責應用中所有通知的發送、清除等管理操作;該類是一個系統服務,需要通過?(NotificationManager)getSystemService(NOTIFICATION_SERVICE)方法獲得;

三、通知的使用流程

  1. ?通過NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)獲得一個通知的Builder對象;

  2. 調用mBuilder的方法設置通知屬性,如setSmallIcon(int drawable)、satContentTitle(CharSquence title)等為通知設置小圖標、內容標題;

  3. 通過mBuilder.build()方法獲得一個Notification對象;

  4. 獲得一個通知管理器NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE),通過nm.notify(int id, Notification notification)方法發送通知,至此,通知便已經發送出去

四、使用NotificationCompat.Builder設置通知的屬性:

RemoteViews?remoteView?=?new?RemoteViews(mContext.getPackageName(),?R.layout.custom_notification);
Bitmap?mBitmap?=?BitmapFactory.decodeResource(mContext.getResources(),?R.drawable.ic_summary_notice);
Intent?intent?=?new?Intent(mContext,?IconifyActivity.class);
PendingIntent?pendingIntent?=?PendingIntent.getActivity(mContext,?0,?intent,?PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder?mBuilder?=?new?NotificationCompat.Builder(mContext).setTicker("ticker")????????????????//新來通知時在狀態欄現實的文本.setContentTitle("content?title")??//設置通知標題.setContentText("content?text")????????//設置通知文本.setSmallIcon(R.drawable.ic_notice_1)??//設置通知左上角小圖標.setContentIntent(pendingIntent)????//設置點擊通知的操作.setDeleteIntent(pendingIntent)????????//設置刪除通知時的操作.setWhen(System.currentTimeMillis())?//設置通知上的時間戳.setProgress(0,?0,?true)???//設置進度條.setStyle(new?NotificationCompat.BigTextStyle())???//設置通知樣式,主要包括默認樣式、BigTextStyle、BigPictureStyle和InboxStyle.setContent(remoteView)????????????????//設置通知使用自定義的視圖,而非系統默認視圖.setLargeIcon(mBitmap)??????????//設置通知大圖標.setAutoCancel(true)????????????????//設置用戶點擊通知后是否自動清除通知,true:清除;false:不清.setNumber(count)????????????????????//設置通知右下角顯示的數字.setDefaults(NotificationCompat.DEFAULT_ALL)????//設置應用于通知上的默認動作,如聲音、三色燈、振動等.setLights(0x0000ff,?300,?300)//設置通知三色燈.setVibrate(new?long[]{0,?300,?500,?700})????//自定義振動.setSound(Uri.parse("file:///sdcard/xx/xx.mp3"))????//自定義通知提示音.setOngoing(false)????????????????????//設置是否為一個后臺任務,默認為否;true表示是一個正在進行的后臺任務,如音樂播放、文件下載、數據同步等.setPriority(NotificationCompat.PRIORITY_DEFAULT)????//設置該通知相對重要性.setColor(0x00ff00)????????????????????//設置通知顏色.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)???//設置通知的可見性,取值為VISIBILITY_PRIVATE(默認)、VISIBILITY_PUBLIC、VISIBILITY_SECRET中的一種.setContentInfo("content?info")????????//設置通知右側的大文本內容.setFullScreenIntent(pendingIntent,?false)????//設置一個直接全屏加載的動作,而不是發送通知至通知欄.setExtras(new?Bundle())????????????//設置通知的元信息.setCategory(NotificationCompat.CATEGORY_MESSAGE)????//設置通知所屬類別.setGroup(NotificationCompat.CATEGORY_CALL)????//設置該通知為分享同一通知鍵值的通知組中的一部分.setGroupSummary(false)????????????????//設置該通知為一個通知組中的摘要通知.setUsesChronometer(false)????????????//使用計時器而非時間戳來顯示時間.setSubText("sub?text")????????????????//設置擴展視圖中的子文本內容.setLocalOnly(false)????????????????//設置該通知是否只在當前設備上顯示,默認為否.setOnlyAlertOnce(false)????????????//設置是否只提示一次.setSortKey("sort?key");????????????????//設置針對一個包內的通知進行排序的鍵值

????下面對部分方法進行詳細解釋:

  1. setContentIntent(PendingIntent intent)和setDeleteIntent(PendingIntent intent):設置點擊該通知或刪除該通知時需要進行的操作,參數為一個PendingIntent ,由該PendingIntent 指定操作意圖

  2. setProgress(int max, int progress, boolean indeterminate):設置通知中包含一個ProgressBar類型的進度條,注意:此方法在4.0及以后版本才有用,如果為早期版本:需要自定義通知布局,其中包含ProgressBar視圖

  • max:進度條的最大值;

  • progress:當前已完成的進度值,一般來說,當操作完成時,progress應等于max,通常將max值設為100,然后將progress值設為當前完成值占max的百分比;

  • indeterminate:一個boolean類型值,表示當前的進度條是為indeterminate(true)還是determinate(false);

  • setDefaults(int defaults):設置應用于通知上的默認提示音、震動、燈光燈,取值只能為以下三種中的一種或多種的組合,當默認燈光、震動、提示音全采用時,可以使用Notification.DEFAULT_ALL

  • Notification.DEFAULT_VIBRATE:添加默認震動提醒 ?需要 VIBRATE permission

  • Notification.DEFAULT_SOUND:添加默認聲音提醒

  • Notification.DEFAULT_LIGHTS:添加默認三色燈提醒

  • setLights(int argb, int onMs, int offMs):自定義通知提示的三色燈燈光顏色和閃爍頻率,可用于區分不同的應用場合下的通知信息;只有設置了標志符Flags為Notification.FLAG_SHOW_LIGHTS的時候,才支持三色燈提醒,同時,并非所有的設備都支持所有的燈光顏色

  • argb:三色燈的顏色

  • onMs:三色燈亮時的持續時間(單位:毫秒)

  • offMs:三色燈暗時的持續時間(單位:毫秒)

  • setVibrate(long[] pattern):設置通知的振動模式,如setVibrate(new long[] {0,300,500,700})表示延遲0ms,振動300ms,然后延遲500ms,振動700ms,以此類推

  • setSound(Uri sound):設置通知的提示音,可以是自定義的提示音,也可以是默認提示音

  • setSound(Uri.parse("file:///sdcard/xx/xx.mp3")):設置提示音為自定義的鈴聲;

  • setSound(Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "5"))表示獲取Android多媒體庫中的鈴聲;

  • setPriority(int pri):設置通知的相對優先級,系統會根據不同優先級的通知采用不同的顯示方式,從而影響用戶在不同優先級的通知上所消耗的時間及被打擾程度,不過一般來說,系統安排通知時的優先級包含多個方面,setPriority只是影響其中的一個方面,具體情況因平臺不同而稍有不同

  • pri:通知的相對優先級,一個整形值,取值范圍為-2(最低優先級)到2(最高優先級)

  • 下表列出了不同優先級所對應的常量及所呈現的效果和用途

優先級?
PRIORITY_MAX(2)最高優先級,重要而緊急的通知,通知用戶這個事件是時間上緊迫的或者需要立即處理的
PRIORITY_HIGH(1)高優先級,用于重要的通信內容,例如短消息或者聊天,這些都是對用戶來說比較有興趣的
PRIORITY_DEFAULT(0)默認優先級,用于沒有特殊優先級分類的通知
PRIORITY_LOW(-1)低優先級,可以通知用戶但又不是很緊急的事件
PRIORITY_MIN(-2)最低優先級,用于后臺消息 (例如天氣或者位置信息);最低優先級通知將只在狀態欄顯示圖標,只有用戶下拉通知抽屜才能看到內容

注意:如何選擇合適的優先級?

????????DEFAULT、HIGH 和 MAX 是中斷優先級別,在活動過程中有中斷用戶的風險。 為了避免打擾應用的用戶,中斷優先級僅保留用于以下通知 :

  • 涉及另一個用戶

  • 時間敏感

  • 可能會立即改變用戶在現實世界中的行為

LOW 和 MIN優先級通知的條件包括:

  • 不涉及其他用戶

  • 不屬于時間敏感型

  • 包含用戶可能感興趣但可選擇在空閑時瀏覽的內容

  • setVisibility(int visibility):設置通知在鎖屏狀態下所顯示的信息詳細程度,visibility的取值為以下三種之一

  • VISIBILITY_PUBLIC: 顯示通知的完整內容

  • VISIBILITY_SECRET:鎖屏狀態下不顯示此通知的任何部分

  • VISIBILITY_PRIVATE(默認):鎖屏時顯示通知圖標和內容標題等基本信息,但是隱藏通知的完整內容,使用該值時,還可以提供其中隱藏了某些詳細信息的替換版本的通知內容

  • setFullScreenIntent(PendingIntent intent, boolean highPriority):當設置該屬性值時,所對應的通知將不會以通常所見的通知形式發送到用戶的狀態欄,而是會全屏顯示參數intent對應的意圖;這類通知一般是優先級非常高,需要用戶進行即時處理的通知,如來電、鬧鐘等,注意:如若想在其他場景中使用該類型通知,一般需要為用戶提供開關此類通知的功能,否則可能會因為過度打擾用戶而引起用戶不滿;

  • setCategory(String category):設置通知所屬的類別,category字符串必須為如下系統預定義的通知類別之一,該值主要用于系統排序和過濾

  • CATEGORY_CALL:來電(語音或視頻)或相似的同步通信請求

  • CATEGORY_MESSAGE:傳入的直接消息(短信、即時消息等)

  • CATEGORY_EMAIL:異步群發消息(電子郵件)

  • CATEGORY_EVENT:日歷事件

  • CATEGORY_PROMO:促銷或廣告

  • CATEGORY_ALARM:鬧鈴或定時器

  • CATEGORY_PROGRESS:長時間運行的后臺操作的進度

  • CATEGORY_SOCIAL:社交網絡或共享更新

  • CATEGORY_ERROR:后臺操作或身份驗證狀態中的錯誤

  • CATEGORY_TRANSPORT:媒體傳輸播放控制

  • CATEGORY_SYSTEM:系統或設備狀態更新。保留給系統使用

  • CATEGORY_SERVICE:正在運行的后臺服務的指示

  • CATEGORY_RECOMMENDATION:對于某個事件的特定、及時建議。例如,新聞應用可能會建議用戶接下來可能想要閱讀的新話題

  • CATEGORY_STATUS:有關設備或上下文狀態的持續信息

五、管理通知

  1. 刪除通知:除非發生以下情況之一,否則通知仍然可見:

  • 用戶單獨或通過使用“全部清除”清除了該通知(如果通知可以清除);

  • 用戶點擊通知,且在創建通知時調用了 setAutoCancel(true);

  • 針對特定的通知 ID 調用了 cancel(),此方法還會刪除當前通知;

  • 調用了 cancelAll() 方法,該方法將刪除之前發出的所有通知;

  • 浮動通知:對于 Android 5.0(API 級別 21),當設備處于活動狀態時(即設備未鎖定且其屏幕已打開),通知可以顯示在小型浮動窗口中(也稱為“浮動通知”)。 這些通知看上去類似于精簡版的通知,只是浮動通知還顯示操作按鈕。 用戶可以在不離開當前應用的情況下處理或清除浮動通知。可能觸發浮動通知的情況有:

  • 用戶的 Activity 處于全屏模式中;

  • 通知的優先級字段設置為 PRIORITY_MAX 或 PRIORITY_HIGH 且通知設置有聲音或振動;

浮動通知的使用范例有:使用設備時來電,使用設備時鬧鈴,新的短信,電池電量過低

? ?

  • 注意事項:

  1. 雖然Android 支持在通知底部顯示可選的操作,但在使用這一功能時需要注意對操作進行篩選,一般,通知中應只包含最重要且有意義的操作,適合在通知中使用的操作為:對正在顯示的內容類型必要、常用且常見;讓用戶可以迅速完成任務;而那些語義含義模糊或跟通知的默認操作一樣的操作則不適合添加在通知中

  2. 注意利用通知的排名和排序:

? ? ? ? ?通知屬于新聞,因此基本以時間倒序顯示,并且會特別考慮應用規定的通知優先級。?通知是鎖定屏幕的關鍵部分,并且在設備顯示屏每次亮起時突出顯示。 鎖定屏幕上的空間有限,因此確定哪些通知最為緊急或最密切相關非常重要。 由于這個原因,Android 在處理通知時使用了更為精密的排序算法,考慮到以下因素:

  • 時間戳以及應用規定的優先級;

  • 通知是否最近以聲音或振動形式告知過用戶;

  • 與使用 EXTRA_PEOPLE 的通知相關的任何人,尤其是加星標的聯系人;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286170.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286170.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286170.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#-Linq源碼解析之Any

前言在Dotnet開發過程中,Any作為IEnumerable的擴展方法,十分常用。本文對Any方法的關鍵源碼進行簡要分析,以方便大家日后更好的使用該方法。使用Any 確定序列中是否包含元素或存在元素滿足指定條件。看這樣一個例子,我們判斷集合中…

python_getopt解析命令行輸入參數的使用

[cpp] view plaincopyprint? import getopt import sys config { "input":"", "output":".", } #getopt三個選項,第一個一般為sys.argv[1:],第二個參數為短參數,如…

五、登錄頁倒計時制作《仿淘票票系統前后端完全制作(除支付外)》

一、登錄功能的實現 首先打開在線編輯器進入我們的項目:https://editor.ivx.cn/ 上一節我們已經完成了基本頁面的制作,在本節中,我們將會開始完成登錄功能的實現。 實現登錄功能需要增加一個用戶組件: 這個用戶組件是需要選擇…

【MATLAB統計分析與應用100】案例001:matlab使用Importdata函數導入文本txt數據

配套實驗數據包下載:鏈接:https://pan.baidu.com/s/1T4zUFmCIOCKIisdGRQPddg?pwdddi1 文章目錄1. 調用importdata函數讀取文件中的數據2. 調用importdata函數讀取文件數據,返回結構體變量x3. 調用importdata函數讀取文件中的數據&#xff0c…

TextView的部分點擊事件和點擊事件

1.在TextView中實現部分點擊 我在activity中使用了clickablespan這個類,然后完全按照視頻上的操作下來,發現點擊時不響應,于是我便設置了電話的鏈接,發現這時點擊 自己設置的區域就會響應,但是如果我把電話鏈接刪了&am…

C語言試題四十之使字符串中尾部的*號不得多于n個;若多于n個,則刪除多于的*號;若少于或等于n個,則什么也不做,字符串中間和前面的*號不刪除。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫一個…

Meta http-equiv屬性詳解

Meta http-equiv屬性詳解 博客分類: Web綜合HTML瀏覽器IECache搜索引擎 http-equiv顧名思義,相當于http的文件頭作用,它可以向瀏覽器傳回一些有用的信息,以幫助正確和精確地顯示網頁內容,與之對應的屬性值為content&am…

MAUI 入門教程系列(3.多目標平臺)

前言如果您是第一次創建MAUI項目, 并且在之前也并沒有接觸過Xamarin.Forms應用, 或許你并不知道MAUI的強大優勢, 在原來的Xamarin.Forms當中, 我們基于不同平臺的項目他們是單獨維護的。如下所示:因為如此, 你需要維護不同平臺的項目。包括每個項目當中包含的資源、圖像、屬性定…

關于質量的聯想:消費示范效應

IT業界有新聞說,根據可靠性數據研究專家Rescue.com發布的今年一季度可靠性報告,“五大電腦公司中,聯想-IBM的分數高居首位,第二名是華碩,之前的可靠性冠軍蘋果跌落第三,東芝、惠普-康柏則排在第五”。大部分…

六、注冊頁功能制作《仿淘票票系統前后端完全制作(除支付外)》

一、注冊塊內容制作 首先打開在線編輯器進入我們的項目:https://editor.ivx.cn/ 上一節已經知道了如何制作登錄塊內容,但是咱們先做還沒有注冊,所以就測試不了登錄塊功能,現在咱們同樣的,在注冊塊中添加一個變量和一…

【MATLAB統計分析與應用100例】案例002:matlab使用xlsread函數讀取excel中的數據

文章目錄 1. 讀取文件excel表中單元格A2:H4中的數據2. 讀取excel第1個工作表中單元格A2:C3中的數據,將數據分別加1后返回3. 讀取excel第1個工作表中單元格A2:H2中的數據,將讀取到的數據分別加1,返回數值矩陣num,文本矩陣txt,元胞數組raw,變換后數值矩陣X1. 讀取文件excel…

美圖秀秀首頁界面按鈕設計(二)

本文實現美圖秀秀首頁中的按鈕,它包含3張圖片和一個文本。通過開發按鈕,我們可以學到iOS的自定義控件,繪制圖片和文本的知識。【聲明:本博客只能用作學習用途,不得用于商業用途,圖片資源均來自官方&#xf…

C語言試題四十一之請編寫一個函數,用來刪除字符串中的所有空格。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫一個…

第三方免費加固橫向對比

前言 基于java開發的android應用由于其語言的特性,所以很容易被反編譯,雖然android提供了proguard,但是也只是增加了源碼閱讀的難度,其中業務邏輯依舊可以分析得出。有些人通過各種破解手段將apk文件破解、反編譯,然后…

(02).NET MAUI實戰 布局

1.概要既然要做實戰開發會建項目之后就需要認識布局控件了&#xff0c;本篇文章分享.NET MAUI中的一些基礎常用的布局控件。GridStackLayoutFalyxLayoutAbsoluteLayout2.詳細內容(1)Grid語法&#xff1a;<Grid RowDefinitions"50,50,50,50" RowSpacing"10&qu…

[Javascript] Avoid Creating floats if they are not needed

https://channel9.msdn.com/Series/Practical-Performance-Tips-to-Make-Your-HTMLJavaScript-Faster/06?WT.mc_id13400-DEV-sitepoint-article24 轉載于:https://www.cnblogs.com/yoyohappy/p/5884629.html

七、后臺入口及添加影院實現《仿淘票票系統前后端完全制作(除支付外)》

一、登錄后臺窗口顯示與跳轉 首先打開在線編輯器進入我們的項目&#xff1a;https://editor.ivx.cn/ 上一節已經完成了登錄和注冊功能&#xff0c;在這一節咱們將會實現對應的后臺入口進入和一些后臺功能的制作。 首先咱們需要記錄一下登錄的UID&#xff0c;因為咱們后臺界面…

正則表達式 學習筆記4.3

下面看看逆序環視結構&#xff1a;publicclassGeneralSix { publicstaticvoidmain(String[] args) { String[] strings newString[]{"see","bee","tee"};String[] regexs newString[]{"(?<s)ee","(?<!s)ee"}; for…

【MATLAB統計分析與應用100例】案例003:matlab調用smooth函數進行加噪數據的平滑處理

文章目錄 1. 產生加噪正弦波信號,繪制加噪波形圖2. 利用移動平均法對加噪信號進行平滑處理,繪制平滑波形圖3. 利用lowess方法對加噪信號進行平滑處理,繪制平滑波形圖4. 利用rlowess方法對加噪信號進行平滑處理,繪制平滑波形圖5. 利用loess方法對加噪信號進行平滑處理,繪制…

C語言試題四十二之假定輸入的字符串中只包含字母和*號。請編寫函數fun,它的功能是:將字符串中的前導*號全部移到字符串的尾部。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫一個…