国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Android】最新版Android13使用Notification,Notification的基本使用和進階使用

這篇具有很好參考價值的文章主要介紹了【Android】最新版Android13使用Notification,Notification的基本使用和進階使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、使用Notification

1、創(chuàng)建一個通知

1.1 注冊一個渠道

在Android13,版本通知的使用發(fā)生了新的變化。

1.1.1 NotificationManager原生類

首先我們需要創(chuàng)建一個NotificationManager用于管理通知。NotificationManager 僅支持在 API 等級 11(Android 3.0)及以上的設(shè)備上使用,因此在較舊的 Android 版本上無法使用較新的通知功能。

//創(chuàng)建notificationManager對通知進行管理
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
`1.1.2 NotificationManagerCompat兼容類

NotificationManagerCompat 是 Android Support Library(現(xiàn)在是 AndroidX 庫)中提供的通知管理兼容類。它用于支持在各個 API 等級的設(shè)備上管理通知,并提供了一致的通知管理接口,無需手動進行版本適配。

  NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);

這兩種方式任意選擇一種即可。

接下來需要注冊一個渠道(channel),通知渠道是一種對通知進行分類和管理的機制。

// 在 MainActivity 或其他合適的地方創(chuàng)建通知渠道
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    String channelId = "001";   //通知渠道的標(biāo)識符
    CharSequence channelName = "QQ";    //通知渠道的位置
    String channelDescription = "來自QQ好友的消息";    //通知渠道的描述

    //設(shè)置通知渠道的級別
    int importance = NotificationManager.IMPORTANCE_DEFAULT;

    //創(chuàng)建通知渠道
    NotificationChannel notificationChannel = new NotificationChannel(channelId, channelName, importance);
    notificationChannel.setDescription(channelDescription);//可以省略
   

    //在系統(tǒng)中注冊消息
    notificationManager.createNotificationChannel(notificationChannel);

}

通過 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) 條件判斷,確保當(dāng)前設(shè)備運行的 Android 版本是 8.0 或更高版本。只有在這種情況下,通知渠道才會被創(chuàng)建。

然后,定義了三個變量和設(shè)置了一個渠道級別用于設(shè)置通知渠道的屬性:

參數(shù) 說明
channelId 通知渠道的ID,用戶不可見,實例化Notification的時候需要用到。
channelName 通知渠道的名稱,這個是方便用戶管理通知用的,用戶可見
channelDescription 通知渠道的描述。用于在系統(tǒng)設(shè)置界面和通知管理中向用戶顯示通知渠道的詳細描述。
importance 渠道優(yōu)先級

渠道的優(yōu)先級有三種:

  1. IMPORTANCE_DEFAULT:(默認級別)
  2. IMPORTANCE_HIGH:(高)
  3. IMPORTANCE_LOW:(低)
  4. IMPORTANCE_MAX:最重要的通知,系統(tǒng)會立馬使得消息顯示在屏幕

notificationmanagercompat和notificationmanager,Android,android,Notification,開發(fā)語言,java

接下來通過NotificationChannel創(chuàng)建一個渠道,構(gòu)造方法的三個參數(shù)分別是:Id、name、importance。

通過setDescription() 方法設(shè)置渠道的表述消息

最后在系統(tǒng)中注冊消息即可:

notificationManager.createNotificationChannel(notificationChannel);

1.2、擴充知識CharSequence

使用 CharSequence 類型的好處在于它是一個通用接口,它可以包含不同類型的字符序列,包括不可變的字符串 String 和可變的字符串 StringBuilderStringBuffer 等。這樣,我們在定義通知渠道時,可以使用 CharSequence 類型的變量,允許傳遞不同類型的字符序列。

1.3 創(chuàng)建通知

注意Android 8以上都需要獲取權(quán)限

//申請通知權(quán)限
if (ContextCompat.checkSelfPermission(MainActivity.this,
                                      Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.POST_NOTIFICATIONS}, 1);
}

還需要在AndroidManifest中進行注冊:

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

接下來才進行創(chuàng)建通知:

//創(chuàng)建通知
Notification notification = new NotificationCompat.Builder(MainActivity.this, "001")
    .setContentTitle("QQ消息")    //消息的標(biāo)題
    .setContentText("你好,我是張三")  //消息的內(nèi)容
    .setWhen(System.currentTimeMillis())    //指定通知被創(chuàng)建的時間
    .setSmallIcon(R.drawable.notify)    //通知的小圖標(biāo)
    .setLargeIcon(BitmapFactory.decodeResource
                  (getResources(), R.drawable.notify)) //通知的大圖標(biāo)
    .build();

//顯示一個通知
notificationManager.notify(1, notification);

setLargeIcon() 方法中,需要傳遞一個 Bitmap 對象作為大圖標(biāo)的內(nèi)容。這里使用了 BitmapFactory.decodeResource(getResources(), R.drawable.notify) 來將 R.drawable.notify 資源轉(zhuǎn)換成 Bitmap 對象,并將其作為大圖標(biāo)設(shè)置給通知。

notificationmanagercompat和notificationmanager,Android,android,Notification,開發(fā)語言,java

1.4 為消息設(shè)置點擊事件

//點擊通知后跳轉(zhuǎn)頁面
Intent intent = new Intent(MainActivity.this,MainActivity2.class);
PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_IMMUTABLE);

使用PendingIntent,他有四個參數(shù):

notificationmanagercompat和notificationmanager,Android,android,Notification,開發(fā)語言,java

  1. 第二個參數(shù)一般不會使用,通常傳入0
  2. 第三個參數(shù)是Intent對象
  3. 第四個參數(shù)是一個標(biāo)志(flag),用于確定意圖的行為

有四個值可選通常是FLAG_IMMUTABLE

  • PendingIntent.FLAG_IMMUTABLE: 這是 Android 12(API 級別 31)及更高版本中引入的標(biāo)志。創(chuàng)建的 PendingIntent 對象將變?yōu)椴豢勺儭?strong>不可變的 PendingIntent 在創(chuàng)建后就無法修改其內(nèi)容、標(biāo)志或其他屬性,提高了安全性和性能。

  • PendingIntent.FLAG_UPDATE_CURRENT: 用于指定如果創(chuàng)建的 PendingIntent 已經(jīng)存在,那么使用現(xiàn)有的 PendingIntent,并更新其中的 Intent 內(nèi)容為新傳入的 Intent。如果不存在,就創(chuàng)建一個新的 PendingIntent這個標(biāo)志通常用于在多次創(chuàng)建相同 PendingIntent 的場景,確保只有一個 PendingIntent 實例,并且其中的 Intent 內(nèi)容保持最新。

  • PendingIntent.FLAG_CANCEL_CURRENT:如果創(chuàng)建的 PendingIntent 已經(jīng)存在,那么將現(xiàn)有的 PendingIntent 取消掉,然后創(chuàng)建一個新的 PendingIntent。即先取消已存在的 PendingIntent,再創(chuàng)建新的。

  • PendingIntent.FLAG_NO_CREATE:如果創(chuàng)建的 PendingIntent 已經(jīng)存在,不會再創(chuàng)建新的 PendingIntent,而是返回已存在的 PendingIntent。如果不存在,返回 null。這個標(biāo)志通常用于查詢是否已經(jīng)存在特定的 PendingIntent,而不會真正創(chuàng)建新的實例

最后使用在創(chuàng)建通知時加上:

.setContentIntent(pi)   //點擊后的跳轉(zhuǎn)事件

然后點擊這個通知就可以實現(xiàn)跳轉(zhuǎn)了。

notificationmanagercompat和notificationmanager,Android,android,Notification,開發(fā)語言,java

通過這個動圖,我們發(fā)現(xiàn)點擊通知后通知依然沒有消失,這是為什么?

解決方法有兩種:

  1. 一種是在NotificationCompat.Builder中再連綴一個**setAutoCancel()**方法

notificationmanagercompat和notificationmanager,Android,android,Notification,開發(fā)語言,java

  1. 另一種是顯式的調(diào)用NotificationManager中的**cancel()**方法。

notificationmanagercompat和notificationmanager,Android,android,Notification,開發(fā)語言,java

這個1就是我們在創(chuàng)建通知時,為這個通知設(shè)置的id

notificationmanagercompat和notificationmanager,Android,android,Notification,開發(fā)語言,java

2、通知的進階用法

android 13都需要在渠道中注冊

2.1 設(shè)置震動

//注冊震動
long[] vibrationPattern = {100, 200, 300, 400}; // 設(shè)置震動模式,參數(shù)為一個 long 類型數(shù)組,表示震動的時長和間隔
// 配置通知出現(xiàn)時的震動(如果 Android 設(shè)備支持的話)
notificationChannel.enableVibration(true);
notificationChannel.setVibrationPattern(vibrationPattern);

notificationChannel.setVibrationPattern(vibrationPattern);這段代碼也可以不在渠道中設(shè)置,只需要使用notificationChannel.enableVibration(true);注冊。

然后在通知NotificationCompat.Builder中:

.setVibrate(new long[]{100, 200, 300, 400})

注意設(shè)置權(quán)限;

<uses-permission android:name="android.permission.VIBRATE"/>

2.2 設(shè)置閃爍燈

// 設(shè)置通知渠道的閃燈效果
notificationChannel.enableLights(true); // 允許通知閃燈

然后在通知NotificationCompat.Builder中:

.setLights(Color.RED,1000,2000)

第一個參數(shù)是顏色,第二個是亮燈時長,第三個是暗燈時長

2.3 設(shè)置聲音

.setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Big_Easy.ogg")))

2.4 創(chuàng)建富文本通知內(nèi)容

.setStyle(new NotificationCompat.BigTextStyle().bigText("ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"))

notificationmanagercompat和notificationmanager,Android,android,Notification,開發(fā)語言,java文章來源地址http://www.zghlxwxcb.cn/news/detail-798104.html

2.5 顯示大圖

.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.notify)))

到了這里,關(guān)于【Android】最新版Android13使用Notification,Notification的基本使用和進階使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 最新版Android studio沒有l(wèi)ayout文件解決方案

    最新版Android studio沒有l(wèi)ayout文件解決方案

    在 最新版的 Android studio中,創(chuàng)建一個空的活動發(fā)生了變化,舊版中可以直接選擇empty activity,如 ?但在新版,empty activity的圖標(biāo)發(fā)生了變化 而在最新版的empty activity上我們創(chuàng)建項目后是沒有l(wèi)ayout文件的,下面的empty views activity才和舊版的empty activity相同。 這表明官方推薦使用C

    2024年02月04日
    瀏覽(22)
  • 2023最新版Android逆向教程——第1天:Android Studio的安裝與配置

    2023最新版Android逆向教程——第1天:Android Studio的安裝與配置

    通常情況下,為了提高開發(fā)效率,需要使用相應(yīng)的開發(fā)工具。在 Android 發(fā)布初期,推薦使用的開發(fā)工具是 Eclipse,隨著 2015 年 Android Studio 正式版推出,標(biāo)志著 Google 公司推薦的 Android 開發(fā)工具已從 Eclipse 更改為 Android Studio。而且在 Android 的官方網(wǎng)站中,也提供了集成 Android 開

    2024年02月07日
    瀏覽(30)
  • 小白配置java環(huán)境與Android Studio目前最新版下載安裝

    小白配置java環(huán)境與Android Studio目前最新版下載安裝

    Android Studio 是用于開發(fā) Android 應(yīng)用的官方集成開發(fā)環(huán)境 (IDE)。Android Studio 基于?IntelliJ IDEA?強大的代碼編輯器和開發(fā)者工具,還提供更多可提高 Android 應(yīng)用構(gòu)建效率的功能,例如: 基于 Gradle 的靈活構(gòu)建系統(tǒng) 快速且功能豐富的模擬器 統(tǒng)一的環(huán)境(供您開發(fā)適用于所有 Android

    2024年02月04日
    瀏覽(22)
  • Android Studio最新版:TextView字體加粗、水平居中和垂直居中

    Android Studio最新版:TextView字體加粗、水平居中和垂直居中 在Android應(yīng)用程序的開發(fā)過程中,我們經(jīng)常需要對界面上的文本進行樣式設(shè)置,其中包括字體加粗以及水平居中和垂直居中顯示。本文將介紹如何使用最新版的Android Studio實現(xiàn)這些效果,并提供相應(yīng)的源代碼作為參考。

    2024年01月23日
    瀏覽(92)
  • uniapp 移動端app判斷用戶app版本是否是最新版(Android)

    1.在uniapp項目中的App.vue文件下 2. 具體實現(xiàn)代碼 ios的話自行給提示 去應(yīng)用商店下載

    2024年01月20日
    瀏覽(20)
  • 【2023年最新版】AndroidKiller使用教程

    【2023年最新版】AndroidKiller使用教程

    目錄 一、AndroidKiller簡介 二、AndroidKiller安裝 三、AndroidKiller使用 四、問題匯總: 1、AndroidKiller反編譯apk,再次打包安裝報錯:Failure [INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2] 2、反編譯的過程,遇到這個報錯:APK 反編譯失敗,無法繼續(xù)下一步源碼反編譯! ?編輯

    2024年02月08日
    瀏覽(28)
  • 最新版Typora免費使用教程心得

    最新版Typora免費使用教程心得

    Typora是一個功能強大的文本編輯器,它的主要特點是它使用Markdown語言進行編輯和排版。與其他文本編輯器不同的是,Typora的編輯界面具有非常簡潔和直觀的設(shè)計,使得編輯和排版變得更加容易。 在本文中,我們將深入了解Typora的各個方面,并詳細介紹它的各種功能和優(yōu)點。

    2024年02月13日
    瀏覽(21)
  • VSCode配置c/c++環(huán)境 MinGW-W64 下載、安裝與配置(支持最新版的GCC,目前 GCC 13.2.0) 徹底刪除vscode(包括插件及配置?。? decoding=

    VSCode配置c/c++環(huán)境 MinGW-W64 下載、安裝與配置(支持最新版的GCC,目前 GCC 13.2.0) 徹底刪除vscode(包括插件及配置!)

    目錄 一、簡介 二、下載 1? 舊版安裝(8.1.0)? 從 sourceforge.net 下載 2? 新版安裝(本次采用較新版本~~~) 從 github 下載 從 鏡像站點 下載 ?自己編譯 三、安裝與配置 1. 在線安裝(這里僅作參考了解) 2. 離線安裝(這是本文安裝的重點,也是本機安裝的版本~~~)★★★ 1? ?下載

    2024年01月19日
    瀏覽(23)
  • 【2023最新版】DataGrip使用MySQL教程

    【2023最新版】DataGrip使用MySQL教程

    目錄 ?一、安裝MySQL 二、安裝DataGrip 三、DataGrip使用MySQL 1. 新建項目 2. DataGrip連接MySQL 下載驅(qū)動文件 填寫root+密碼 測試 成功 3. DataGrip操作MySQL 四、MySQL常用命令 1. 登錄 2. 幫助 3. 查詢所有數(shù)據(jù)庫 ????????MySQL是一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),它是最流行和廣泛

    2024年02月09日
    瀏覽(33)
  • Podman安裝nacos使用(默認最新版)

    Podman安裝nacos使用(默認最新版)

    一,命令熟悉 --name : 命名容器的名稱. -d:表示在后臺運行容器. -p:指定端口映射。如: 左邊的8848是宿主機的端口,右邊的8848是nacos容器內(nèi)部的端口。 docker.io/nacos/nacos-server:表示根據(jù)docker.io/nacos/nacos-server鏡像運行容器。 --restart=always???? 表示啟動的時候會啟動相關(guān)容器插件

    2024年02月11日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包