/* * Copyright (C) 2019 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.messaging.util; import android.app.NotificationChannel; import android.app.NotificationChannelGroup; import android.app.NotificationManager; import android.content.Context; import android.os.Build; public final class NotificationsUtil { public static final String DEFAULT_CHANNEL_ID = "messaging_channel"; public static final String CONVERSATION_GROUP_NAME = "conversation_group"; private NotificationsUtil() { } public static void createNotificationChannel(Context context, String id, int titleResId, int priority, String groupId) { String title = context.getString(titleResId); createNotificationChannel(context, id, title, priority, groupId); } public static void createNotificationChannel(Context context, String id, String title, int priority, String groupId) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { return; } NotificationManager manager = context.getSystemService(NotificationManager.class); NotificationChannel existing = manager.getNotificationChannel(id); if (existing != null) { return; } NotificationChannel newChannel = new NotificationChannel(id, title, priority); newChannel.enableLights(true); if (groupId != null) { newChannel.setGroup(groupId); } manager.createNotificationChannel(newChannel); } public static void deleteNotificationChannel(Context context, String id) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { return; } NotificationManager manager = context.getSystemService(NotificationManager.class); manager.deleteNotificationChannel(id); } public static void createNotificationChannelGroup(Context context, String id, int titleResId) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { return; } NotificationManager manager = context.getSystemService(NotificationManager.class); NotificationChannelGroup existing = manager.getNotificationChannelGroup(id); if (existing != null) { return; } String title = context.getString(titleResId); NotificationChannelGroup newChannelGroup = new NotificationChannelGroup(id, title); manager.createNotificationChannelGroup(newChannelGroup); } public static NotificationChannel getNotificationChannel(Context context, String id) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { return null; } NotificationManager manager = context.getSystemService(NotificationManager.class); return manager.getNotificationChannel(id); } public static NotificationChannelGroup getNotificationChannelGroup(Context context, String id) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { return null; } NotificationManager manager = context.getSystemService(NotificationManager.class); return manager.getNotificationChannelGroup(id); } }