1. 程式人生 > >android 8.0 新特性:通知渠道

android 8.0 新特性:通知渠道

  由於Google的限制,要求在2018年10月之前 targetSdkVersion 必須在26以上,更改過之後發現在androd 8手機上不再推送通知,檢視android 8.0官方文件發現,添加了通知渠道新特性,並要求targetSdkVersion 26以上的android 8手機必須實現通知渠道

  通知渠道可以使用者自定義,並在使用者手機系統設定裡面修改,通知渠道的引入可以讓使用者對通知的優先順序有了更好的體驗,開發者定義兩個渠道  product_01, product_02,

   其中product_01 重要性為高,每次推送通知發出聲音

   product_02 重要性為緊急,每次推送通知發出聲音和彈出視窗

   假設一個場景:針對微信使用者,好友訊息採用product_01通知渠道,群訊息採用product_02通知渠道,這樣一來,如果好友發來訊息,就會發出聲音,但不彈出視窗;如果是群訊息,不但發出訊息還會彈出視窗;然後過一段時間你覺得好友訊息比較重要,群訊息相對不太重要,想改一下通知的優先順序,於是,在系統設定裡面找到通知,把微信的product_01改為重要性緊急,把product_02改為重要性高,如此操作以後,如果好友發來訊息,不但發出聲音而且彈出視窗;如果是群訊息,只能發出聲音但沒有彈窗

具體實現

    private void sendNotification() {

        NotificationCompat.Builder builder =
                new NotificationCompat.Builder(this, "id_product_01")
                        .setContentText("Hello World")
                        .setSmallIcon(R.drawable.ic_launcher_foreground)
                        .setContentTitle("id")
                        .setChannelId("id_product_01");

        //新增返回棧,使按返回鍵後,不會退出,而是跳轉到主介面
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(NotificationJumpActivity.class);
        Intent intentActivity = new Intent(this, NotificationJumpActivity.class);
        stackBuilder.addNextIntent(intentActivity);
        PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
        builder.setContentIntent(pendingIntent);

        NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            String id = "id_product_01";
            CharSequence name = "Product_01";
            String description = "Notifications regarding our products";
            int importance = NotificationManager.IMPORTANCE_HIGH;
            NotificationChannel mChannel = new NotificationChannel(id, name, importance);
            mChannel.setDescription(description);
            mChannel.enableLights(true);
            mChannel.setLightColor(Color.RED);
            mChannel.enableVibration(true);
            notificationManager.createNotificationChannel(mChannel);
        }
        notificationManager.notify(1, builder.build());
        
    }

注意,channelId為唯一識別符號,和渠道是一對一的關係,一旦建立過 channelId為 id_product_01 的渠道就不會再進行建立

刪除渠道通過 

            notificationManager.deleteNotificationChannel("id_product_01"); 其中引數為 channelId


相關推薦

android 8.0 特性通知渠道

  由於Google的限制,要求在2018年10月之前 targetSdkVersion 必須在26以上,更改過之後發現在androd 8手機上不再推送通知,檢視android 8.0官方文件發現,添加了通知渠道新特性,並要求targetSdkVersion 26以上的and

Android 8.0特性及開發指南

一、通知渠道 — Notification Channels 通知渠道是由應用自行定義的通知內容類別,藉助渠道,開發者可以讓使用者對不同種類的通知進行精細控制,使用者可以單獨攔截或更改每個渠道的行為,而不是統一管理應用的所有通知。 開發指南 建立通知渠道的步驟: 1、建立

Android 8.0 特性

背景介紹 Android O 是 Google 釋出的第14個新系統版本。 那備受開發者關注的 Android O 有哪些新特性,開發者需要關注哪些問題呢?騰訊雲樂固團隊結合相關文件對此進行了分析總結,我們一起來看看 Android O 的新特性及開發指南。

Android O / Android 8.0 特性及開發指南

谷歌2017 I/O開發者大會今年將於5月17-19日在美國加州舉辦。大會將跟往年一樣釋出最新的 Android 系統,今年為 Android 8.0。谷歌在今年3 月21日釋出 Android 新系統開發者預覽版時已給新系統取名為 Android O。自2008 年釋出

開發者必看|Android 8.0 特性及開發指南

背景介紹 谷歌2017 I/O開發者大會今年將於5月17-19日在美國加州舉辦。大會將跟往年一樣釋出最新的 Android 系統,今年為 Android 8.0。谷歌在今年3 月21日釋出 Android 新系統開發者預覽版時已給新系統取名為 Android O。自2008

是時候瞭解一下Android 8.0 特性

背景介紹 谷歌2017 I/O開發者大會今年將於5月17-19日在美國加州舉辦。大會將跟往年一樣釋出最新的 Android 系統,今年為 Android 8.0。谷歌在今年3 月21日釋出 Android 新系統開發者預覽版時已給新系統取名為 Android

Android 8.0 特性及開發指南

背景介紹 谷歌2017I/O開發者大會今年將於5月17-19日在美國加州舉辦。大會將跟往年一樣釋出最新的 Android 系統,今年為 Android 8.0。谷歌在今年3 月21日釋出 Android 新系統開發者預覽版時已給新系統取名為 Android O。自200

Android 8.0特性適配測試報告來啦!

WeTest 導讀谷歌2017 I/O開發者大會上釋出了Android 8.0的正式版, 其官方代號為Oreo(奧利奧)。網上關於Android8.0新功能特性的介紹已鋪天蓋地,新功能特性會對程式應用帶來哪些影響呢,我們從相容性角度來看下這部分變化。 測試版本:Android 8.0  安裝啟動測試 A

Android O 8.0特性(四) 官方Demo

主要採用的google翻譯,不當之處,還望指正.Code Samples 程式碼示例Use the code samples below to learn about Android 8.0 (API level 26) capabilities and APIs. To d

C# 7.0 特性本地方法

性能 erro 區別 visual html 修飾 之間 style ria C# 7.0:本地方法 VS 2017 的 C# 7.0 中引入了本地方法,本地方法是一種語法糖,允許我們在方法內定義本地方法。更加類似於函數式語言,但是,本質上還是基於面向對象實現的。 1.

MySQL 8.0特性

MySQL8.0新特性一、MySQL 8.0中添加的功能1、新的系統字典表 整合了存儲有關數據庫對象信息的事務數據字典,所有的元數據都用InnoDB引擎進行存儲2、支持DDL 原子操作 InnoDB表的DDL支持事務完整性,要麽成功要麽回滾,將DDL操作回滾日誌寫入到data dictionary

MySQL8.0 特性Partial Update of LOB Column

sql摘要: MySQL8.0對json進行了比較完善的支持, 我們知道json具有比較特殊的存儲格式,通常存在多個key value鍵值對,對於類似更新操作通常不會更新整個json列,而是某些鍵值。 對於某些復雜的應用,json列的數據可能會變的非常龐大,這時候一個突出的問題是:innodb並不識別json

Android 9.0特性

進入 估算 電話 定制化 看電影 時間 體驗 cati adapt 1、全面屏支持,Android P加入了對劉海屏的支持,谷歌稱之為凹口屏幕(display with a cutout)。借助最新的提供的DisplayCutout類,開發者可以找到非功能區域的位置和形狀,

[翻譯] C# 8.0 特性

原文: [翻譯] C# 8.0 新特性 原文: Building C# 8.0 [譯註:原文主標題如此,但內容大部分為新特性介紹,所以意譯標題為 "C# 8.0 新特性"] C# 的下一個主要版本是 8.0。我們已經為它工作了很長一段時間,即使我們構建併發布了次要版本 C# 7.1, 7.2 和 7.3,

MySQL 8.0特性--CTE(二)

上一篇介紹了CTE的基本用法,參考MySQL 8.0新特性--CTE(一),本篇再來介紹一下CTE Recurive遞迴。 1、什麼是CTE Recurive? A recursive common table expression is one having a subquery that refe

MySQL 8.0特性之Windows Function

MySQL8.0開始像Oracle一樣支援視窗函數了,先來跑個SQL,感受一下視窗函式的魅力。 mysql> create table numbers(val int); mysql> insert into numb

MySQL 8.0特性--invisible index

invisible index特點 預設建立的索引都是visible,如果需要invisible索引建立的時候需要指定invisible引數。 預設無法使用invisible index索引,需要開啟引數optimizer_switch='use_invisible_indexes=on'才能使用;

MySQL 8.0特性--Descending Indexes(六)

Descending Indexes降序索引 降序索引主要是用來減少排序,去除filesort的。 MySQL支援降序索引:索引定義中的DESC不再被忽略,而是按降序儲存鍵值。以前,索引可以以相反的順序掃描,但會影響效能。可以按前向順序掃描降序索引,效率更高。當最有效的掃描順序混合了某些列的升序和其他

MySQL 8.0特性--skip scan range access method(七)

先來個示例: mysql> CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY(f1,&nbs

MySQL 8.0特性之原子DDL

  文章來源:愛可生雲資料庫   簡介   MySQL8.0 開始支援原⼦ DDL(atomic DDL),資料字典的更新,儲存引擎操作,寫⼆進位制日誌結合成了一個事務。在沒有原⼦DDL之前,DROP TABLE t