From 7bec5bf8952a53f5dfb3ea7180d1ecfcdb839e2d Mon Sep 17 00:00:00 2001 From: Hemant Gupta Date: Tue, 16 May 2017 15:27:33 +0530 Subject: [PATCH] Settings: Convert notifications to use NotificationChannel (2/2) Test Setup: =========== HW DUT: Pixel O Remote: MecApp (PBAP Client, MAP Client, SAP Client) Steps: ===== 1. Enable BT on DUT and bond with Remote. 2. Connect from MecApp for PBAP, MAP, SAP and observe if connection goes through fine. Reproducibility: =============== 5/5 Observation: ============ MAP, PBAP and SAP cannot be connected. Root cause: In Android O, notifications are hidden by default. This must be changed to use notification channels so that the priority of the notifications can be updated. Test: PBAP/MAP/SAP connection works fine with MecApp. Bug: 38331825 Change-Id: I51de0ea303037bf88773352d99f092673acda2e3 (cherry picked from commit bd9f532013f0397879101f68f21ac8841fec344b) --- .../bluetooth/BluetoothPermissionRequest.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java b/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java index 7eb7fdda87a..59496ddb6e8 100644 --- a/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java +++ b/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java @@ -17,6 +17,7 @@ package com.android.settings.bluetooth; import android.app.Notification; +import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.bluetooth.BluetoothDevice; @@ -45,6 +46,12 @@ public final class BluetoothPermissionRequest extends BroadcastReceiver { private static final String NOTIFICATION_TAG_PBAP = "Phonebook Access" ; private static final String NOTIFICATION_TAG_MAP = "Message Access"; private static final String NOTIFICATION_TAG_SAP = "SIM Access"; + /* TODO: Consolidate this multiple defined but common channel ID with other + * handlers that declare and use the same channel ID */ + private static final String BLUETOOTH_NOTIFICATION_CHANNEL = + "bluetooth_notification_channel"; + + private NotificationChannel mNotificationChannel = null; Context mContext; int mRequestType; @@ -151,7 +158,16 @@ public final class BluetoothPermissionRequest extends BroadcastReceiver { deviceAlias, deviceAlias); break; } - Notification notification = new Notification.Builder(context) + NotificationManager notificationManager = + (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + if (mNotificationChannel == null) { + mNotificationChannel = new NotificationChannel(BLUETOOTH_NOTIFICATION_CHANNEL, + context.getString(R.string.bluetooth), + NotificationManager.IMPORTANCE_HIGH); + notificationManager.createNotificationChannel(mNotificationChannel); + } + Notification notification = new Notification.Builder(context, + BLUETOOTH_NOTIFICATION_CHANNEL) .setContentTitle(title) .setTicker(message) .setContentText(message) @@ -169,9 +185,6 @@ public final class BluetoothPermissionRequest extends BroadcastReceiver { notification.flags |= Notification.FLAG_NO_CLEAR; // Cannot be set with the builder. - NotificationManager notificationManager = - (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - notificationManager.notify(getNotificationTag(mRequestType), NOTIFICATION_ID, notification); }