日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转

發布時間:2024/1/8 Android 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android基礎知識(二十):Notification、提醒式通知(橫幅)踩坑與通知界面設置跳轉

一、Notification通知與基本用法
通知Notification是Android系統中比較有特色的一個功能,當某個應用程序希望用戶發出一些提示消息,而該應用程序又不在前臺運行時,就可以借助通知來實現。
首先上代碼,如下為Notification的一個簡單的例子,其中使用NotificationManager來管理通知。通過設置通知的標題、通知內容、通知時間以及通知圖標等內容,設置該應用程序的通知樣式,并使用NotificationManager的notify方法顯示通知,其第一個參數為通知的id,用于唯一標識該通知;第二個參數為notification。

關于Notification常用的設置setXX()方法及其說明如下所示。其中的設置方法setContentIntent(PendingIntent)用于設置當點擊通知之后,將要跳轉的Activity,PendingIntent與Intent類似,但是前者更加傾向于在某個合適的時機去執行某個動作,而Intent則是傾向于立即執行某個動作。

對于PendingIntent的實例獲取中,Android提供了幾個靜態方法getActivity()、getBroadcast()、以及getService()方法。這幾個方法的參數是一致的,第一個參數為Context,第二個參數一般用不到,通常傳入0,第三個參數為Intent對象,通過該對象構建出PendingIntent的意圖,第四個參數用于確定PendingIntent的行為,有4個值可選
FLAG_ONE_SHOT:該PendingIntent只作用一次。在該PendingIntent對象通過send()方法觸發之后,將自動調用cancel進行銷毀。
FLAG_NO_CREATE:如果AlarmManager管理的PendingIntent已經存在,那么將不進行任何操作,直接返回
FLAG_CANCEL_CURRENT:如果AlarmManager管理的PendingIntent已經存在,那么將會取消當前的PendingIntent,從而創建一個新的PendingIntent
FLAG_UPDATE_CURRENT:如果AlarmManager管理的PendingIntent已經存在,讓新的Intent更新之前Intent對象數據

二、Android 8.0消息通知適配
隨著Android版本的更新,其對消息通知也做出了更改,如上的代碼中可以看到當Android SDK的版本大于26時,原本的NotificationCompat.Builder(context)已經過時,并且在Android 8.0中,這樣使用的通知是無法顯示的。也就是說,在Android 8.0系統以上的手機使用上述代碼,通知完全無法顯示。

從Android 8.0系統開始,Google引入了通知渠道這個概念。通知渠道是指每條通知都要屬于一個對應的渠道,每個APP可以自由地創建當前APP擁有哪些通知渠道,但是這些通知渠道的控制權都是掌握在用戶手上的。用戶可以自由地選擇這些通知渠道的重要程度、是否響鈴、是否震動或者是否關閉這個渠道的通知。
因此,Android 8.0及其以上系統中,為了能夠顯示通知,需要做如下的通知適配。對NotificationManager設置一個渠道,并設置該渠道的ID、Name、渠道重要程度以及設置是否震動等。

通知渠道類NotificationChannel的常用設置方法setXXX()如下表所示。

此外,一個APP可以設置多個渠道,即多個NotificationChannel,如下所示,在應用中設置兩個通知渠道,分別命名為聊天通知消息,以及其他通知。

在手機中可以看到,該應用下的通知類別有聊天通知消息以及其他消息的通知渠道,用戶可以通過不同的渠道對該應用的不同通知類型進行設置。

三、消息通知填坑——提醒式通知
諸如微信,QQ等應用一樣,當應用程序有新的通知時候,Android系統會有提醒式通知。那么什么是提醒式通知呢?
從Android 5.0開始,通知可以短暫地顯示在浮動窗口中,稱之為提醒式通知。提醒式通知會在應用發出通知后立即出現,稍后便會消失,但仍顯示在抽屜式通知欄中

可能會觸發提醒式通知的條件有如下3種:
? 用戶的Activiity處于全屏模式(應用使用fullScreenIntent
? 通知的優先級很高,且在搭載Android 7.1(API級別25)及更低版本的設備上使用鈴聲或震動
? 在搭載Android 8.0(API級別為26)及更高版本的設備上,通知渠道的重要程度比較高

  • 坑1:fullScreenIntent的使用
    經過實踐,在小米手機中,設置用戶的Activity處于全屏模式即使用fullScreenIntent方法,無論其第二個參數是否為true,其都會自動跳轉到將要跳轉的Activity,并且即使設置了setAutoCancel(true),由于該跳轉不是點擊通知發生的,所以通知并不會消失。
  • 坑2:Android 8.0通知渠道重要程度
    前面在做Android 8.0通知適配中,設置了通知渠道的重要程度都為最高NotificationManager.IMPORTANCE_HIGH,但是依舊沒有提醒式通知

    據郭霖大神解釋,國產手機默認只給微信、QQ這類程序開橫幅(即提醒式通知),其余應用需要手動去設置里面選擇打開橫幅才會有,而之所以這么做一方面是和國內開發公司的素質相關,由于國內許多開發公司的APP根本不區分通知重要還是不重要,都會拉到最高權限,這是對用戶的一種傷害。
    所以,在通知渠道設置了一大堆亂七八糟的東西,系統就丟給你一句:然并卵!!
  • 四、通知設置界面跳轉
    Android為開發者提供了管理讀取通知渠道配置的權限,如果某個功能必須按照指定要求來配置通知渠道才能使用,那么可以提示用戶手動更改通知渠道配置。
    對于不同的Android版本,由于版本的不同其設置權限是不一樣的,所以需要對APP所運行的客戶端的Android版本進行判斷,并根據不同的版本調用不同的代碼進入到系統的通知設置界面。

    第一張圖Android 8.1下通知渠道名為聊天通知消息的通知具體設置界面,而第二張圖為Android5.0至7.0之間的通知設置界面。

    參考資料:《第一行代碼 Android 第2版》
    Android通知欄微技巧,8.0系統中通知欄的適配
    AndroidTotal/Android權限之通知、自啟動跳轉

    總結

    以上是生活随笔為你收集整理的Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。