最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android消息通知Notification常用方法(發(fā)送消息和接收消息)

 更新時間:2024年02月06日 14:50:26   作者:Parcelable  
最近在做消息通知類Notification的相關業(yè)務,利用閑暇時間總結(jié)一下,主要分為兩部分來記錄:發(fā)送消息和接收消息,對Android消息通知相關知識感興趣的朋友一起看看吧

Notification

#前言

最近在做消息通知類Notification的相關業(yè)務,利用閑暇時間總結(jié)一下。主要分為兩部分來記錄:發(fā)送消息和接收消息。

發(fā)送消息

發(fā)送消息利用NotificationManager類的notify方法來實現(xiàn),現(xiàn)用最普通的方式發(fā)送:

Notification.Builder builder = new Notification.Builder(context, channelId);
builder.setSmallIcon(R.drawable.ic_launcher)
                        .setContentTitle("標題")
                        .setContentText("內(nèi)容")
Notification notification = builder.build();
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel notificationChannel = new NotificationChannel(channelId, name,NotificationManager.IMPORTANCE_DEFAULT);
manager.createNotificationChannel(notificationChannel);
manager.notify(R.string.app_name,notification);                      

這樣一段簡單的發(fā)送消息的代碼就完成了。
在發(fā)送消息的時候builder可以攜帶很多參數(shù),具體查看api即可,這里我記錄一下我用到的一些常用的方法。

builder..addAction(icon,title,pendingIntent);

三個參數(shù)分別是int類型(api已過時),charText類型和pendingIntent意圖。
這個方法我認為就很不錯,比如當需要封裝一個公共的彈窗,但是按鈕數(shù)量和按鈕顏色以及彈窗的標題不一樣,這時候就可以利用這個方法進行規(guī)定。因為action是個數(shù)組,需要幾個傳幾個就可以,比如彈窗有兩個按鈕,那么就傳兩個action過去,第一個參數(shù)傳按鈕的顏色值,第二個參數(shù)傳按鈕的名稱,第三個參數(shù)傳pendingIntent意圖。這樣就不用很復雜的實現(xiàn)邏輯就可以完成這個公共的彈窗。
同樣,builder支持傳bundle,方法如下:

Bundle bundle = new Bundle();
builder.setExtras(bundle);

bundle可以攜帶參數(shù),同理剛才說的封裝公共彈窗也可以用bundle傳值的形式實現(xiàn),但是相比較action的方式是不是就會復雜很多。
bundle可以傳遞一些公共的參數(shù),比如一個type,當接收到通知的時候利用type來區(qū)分要做什么動作,這個就看項目實際需求了。
這里我把通知跳轉(zhuǎn)意圖的跳轉(zhuǎn)activity和接收廣播的代碼放上來,也為自己做個記錄。

Bundle bundle = new Bundle();
NotificationChannel notificationChannel = new NotificationChannel("99", "TEMP", NotificationManager.IMPORTANCE_DEFAULT);                 
Notification.Builder builder = new Notification.Builder(MainActivity.this, "99");
//Intent intent = new Intent(MainActivity.this,SecondActivity.class);
Intent intent = new Intent(MainActivity.this,MyBroadCastReceiver.class);
intent.setAction("android.intent.action.MY_BROADCAST");
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);
builder.setSmallIcon(R.drawable.ic_launcher_background)
                        .setContentTitle("標題")
                        .setContentText("內(nèi)容")
                        .setWhen(System.currentTimeMillis())
                        .addAction(R.color.purple_200,"確定",pendingIntent)
                        .addAction(R.color.black,"取消",pendingIntent)
                        .setExtras(bundle);
Notification notification = builder.build();
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.createNotificationChannel(notificationChannel);
manager.notify(R.string.app_name,notification);

刪除通知:

manager.cancel(tag,id);

這里注意的是發(fā)送通知可以是兩個參數(shù)和三個參數(shù),三個參數(shù)的方法第一個參數(shù)是tag,那么調(diào)用刪除方法的時候要和這個tag對應上,就是要刪除哪條消息就傳哪個tag。

接收消息

接收消息我是重新創(chuàng)建一個類繼承自NotificationListenerService,然后復寫需要用到的幾個方法,由于我的項目是systemui的開發(fā),所以和實際需求上可能會略有不同。

@Override
    public void onNotificationPosted(StatusBarNotification sbn)

該方法是接收到消息通知時的回調(diào)。
我不太清楚為什么我只發(fā)送了一次通知,但在該方法中卻收到了兩次消息。那就想辦法過濾一下吧。利用sbn返回的key和time來判斷。

mPreviousNotificationKey = sbn.getKey();
mPreviousNotificationKeyTime = sbn.getPostTime();

正常創(chuàng)建兩個變量來保存該次受到的key和postTime。然后利用sp先來獲取一次上次保存的這兩個值,再把該次獲取的這兩個值利用sp存上。

 String mPreviousNotification = spHelper.getString("notificationKey");
 Long mPreviousNotificationTime = spHelper.getLong("notificationTime");
 spHelper.putValues(new SPHelper.ContentValue("notificationKey", mPreviousNotificationKey));
 spHelper.putValues(new SPHelper.ContentValue("notificationTime", mPreviousNotificationKeyTime));

然后根據(jù)兩次取值判斷:

if (mPreviousNotificationKey.equals(mPreviousNotification) && mPreviousNotificationKeyTime.equals(mPreviousNotificationTime)) {
            return;
}

兩次值一樣直接return過濾掉。

 @Override
    public void onNotificationRemoved(StatusBarNotification sbn)

該方法是接收到刪除消息的通知。
至此,結(jié)束,方便過后有類似需求查閱。

到此這篇關于Android消息通知Notification的文章就介紹到這了,更多相關Android消息通知內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • android實現(xiàn)主動連接和被動連接的藍牙聊天功能

    android實現(xiàn)主動連接和被動連接的藍牙聊天功能

    這篇文章主要為大家詳細介紹了android實現(xiàn)主動連接和被動連接的藍牙聊天功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android RecyclerView實現(xiàn)拼團倒計時列表實例代碼

    Android RecyclerView實現(xiàn)拼團倒計時列表實例代碼

    這篇文章主要給大家介紹了關于Android RecyclerView實現(xiàn)拼團倒計時列表的相關資料,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • Android編程之View簡單學習示例

    Android編程之View簡單學習示例

    這篇文章主要介紹了Android編程之View簡單學習示例,以一個實例形式較為詳細的分析了View的功能、定義及使用技巧,需要的朋友可以參考下
    2015-10-10
  • Android 關于ExpandableListView去掉里頭分割線的方法

    Android 關于ExpandableListView去掉里頭分割線的方法

    下面小編就為大家?guī)硪黄狝ndroid 關于ExpandableListView去掉里頭分割線的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Android自定義RecyclerView實現(xiàn)不固定刻度的刻度尺

    Android自定義RecyclerView實現(xiàn)不固定刻度的刻度尺

    這篇文章主要為大家詳細介紹了Android自定義RecyclerView實現(xiàn)不固定刻度的刻度尺,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Android中bindService基本使用方法概述

    Android中bindService基本使用方法概述

    這篇文章主要介紹了Android中bindService基本使用方法,詳細解釋了bindService的基本使用概述及其生命周期,需要的朋友可以參考下
    2015-12-12
  • Android實現(xiàn)返回鍵操作思路

    Android實現(xiàn)返回鍵操作思路

    這篇文章主要為大家詳細介紹了Android實現(xiàn)返回鍵操作思路,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android Studio下載與安裝簡易教程

    Android Studio下載與安裝簡易教程

    這篇文章主要為大家詳細介紹了Android Studio下載與安裝簡易教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Android Room數(shù)據(jù)庫的基本使用示例詳解

    Android Room數(shù)據(jù)庫的基本使用示例詳解

    文章介紹了Android Jetpack中的Room組件庫,用于簡化SQLite數(shù)據(jù)庫的操作,Room通過Entity、DAO和Database三大核心組件,提供了面向?qū)ο蟮姆绞絹硖幚頂?shù)據(jù)庫,文章還提到使用Flow進行數(shù)據(jù)庫更新通知的示例,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • 解析ADT-20問題 android support library

    解析ADT-20問題 android support library

    本篇文章是對ADT-20問題 android support library進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06

最新評論

瑞金市| 湖南省| 南川市| 盖州市| 张家界市| 郑州市| 黄梅县| 福泉市| 冀州市| 兴化市| 胶州市| 淅川县| 神农架林区| 英德市| 陕西省| 宜川县| 高邮市| 崇礼县| 克山县| 高密市| 酒泉市| 蒙自县| 藁城市| 丹阳市| 东乡| 嘉黎县| 汉沽区| 成安县| 昂仁县| 明溪县| 肃北| 岳阳市| 剑川县| 永新县| 金昌市| 泸州市| 高安市| 宾川县| 巴马| 桓台县| 自贡市|