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

歡迎訪問 生活随笔!

生活随笔

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

Android

android8 通知呼吸灯_Android8.0及以上的Notification

發布時間:2025/3/12 Android 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android8 通知呼吸灯_Android8.0及以上的Notification 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章上次修改于 702 天前,可能其部分內容已經發生變化,如有疑問可詢問作者。

在新版本上(Android8.0及以上)開發時,會遇到一些問題,比如,不顯示通知,Notification 聲音不可控,刪除 channel 刪到崩潰。

閑下來測試一番,總結 Notification 如下:

首先,Android8.0 及以上版本使用 Notification 需要為其設置 NotificationChannel ,理解為頻道,為 Notification 歸類,統一管理,設置聲音,震動等都需要通過 NotificationChannel 進行設置NotificationChannel channel = new ...

channel.setSound(null,null);//靜音

channel.enableVibration(true);//震動

channel.setVibrationPattern(new long[]{100,200,300});//震動模式

channel.enableLights(true);//呼吸燈

channel.setLightColor(Color.rgb(0,0,0));//呼吸燈顏色

NotificationChannel 構造函數參數解釋id :唯一標示

name :顯示在應用詳情中的名稱,不唯一,可重復,即使在同一組中也可重復(下面會提到組的概念)。

importance :級別,重要性 NotificationManager 共提供了7個級別的常量NotificationManager.IMPORTANCE_UNSPECIFIED

NotificationManager.IMPORTANCE_NONE

NotificationManager.IMPORTANCE_MIN

NotificationManager.IMPORTANCE_LOW

NotificationManager.IMPORTANCE_DEFAULT

NotificationManager.IMPORTANCE_HIGH

NotificationManager.IMPORTANCE_MAX

NotificationChannel 構造函數里 id 是唯一的,使用相同 id ,不同 name new出的新對象代表的是同一個 channel ,name 會被最后一個 NotificationManager.createNotificationChannel(channel) 中的 channel name 覆蓋。

還有一個為 NotificationChannel 歸類的組的概念,NotificationChannelGroup , 他的構造函數只有 id 和 name ,同樣的,和上面 NotificationChannel 的含義一樣,略。

將 NotificationChannel 添加到 NotificationChannelGroup 的方式,不是 group.add 或 group.set ,而是NotificationChannel channel = new ...

channel.setGroup("group1");//傳參 NotificationChannelGroup的id

由于是上面這種方式關聯二者,所以 NotificationChannelGroup 必須先創建NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

NotificationChannelGroup group = new NotificationChannelGroup("group1","This is Group 1");

manager.createNotificationChannelGroup(group);

再通過 channel.setGroup("group1") 做關聯,否則會報異常Caused by: java.lang.IllegalArgumentException: NotificationChannelGroup doesn't exist

并且 channel.setGroup("group1") 必須在 NotificationManager.createNotificationChannel(channel) 之前設置,否則無效,所以,他們的順序是manager.createNotificationChannelGroup(group);

channel.setGroup("group1");

manager.createNotificationChannel(channel);

當 NotificationChannelGroup 在沒有添加任何 NotificationChannel 時,在應用詳情中不會顯示該組

NotificationChannelGroup 好像記仇,channel 只要加進去的,就永遠刪不掉,嘗試使用channel.setGroup(null);//置空

channel.setGroup("group2");//設置到其他組

都不管用,通過manager.deleteNotificationChannel("channel1");//傳參 channel的id

也只是能隱藏 channel,如果還用相同的 id 創建 channel ,新 channel 還在第一次加入的那個組中,只有卸載應用才能刪除 channel ,在開發時,一定要注意這一點,在調試時,可以采用不同的 id 以避免出現詭異的現象。

我理解這是一個注冊的機制,應用安裝后,只要 NotificationManager.createNotificationXXX 代碼運行一次就注冊了,即使應用以后的版本注釋了該段代碼,他依然有效,想要"刪除",需要主動調用 NotificationManager.deleteNotificationXXX ,想要徹底刪除只能卸載應用~

還要提一點, NotificationCompat.Builder 的構造函數中 channelId 必須是注冊過的 channelId,否則在 NotificationManager.notify 時,不會出現通知,也不會報像 channel doesn't exist 的異常。

2019/1/18.

Dean.King

Beijing

總結

以上是生活随笔為你收集整理的android8 通知呼吸灯_Android8.0及以上的Notification的全部內容,希望文章能夠幫你解決所遇到的問題。

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