From 7655cc25bea04638ec2229ea8f57e6e22a7bda1e Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Mon, 7 Sep 2020 16:26:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8D=95=E6=8A=93=E9=80=9A=E7=9F=A5=E6=A0=8F?= =?UTF-8?q?=E9=97=AA=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/util/DownloadNotificationHelper.kt | 51 ++++++++++--------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt index 0a6965a9c6..2c1b26b2e9 100644 --- a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt +++ b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt @@ -139,32 +139,35 @@ object DownloadNotificationHelper { } private fun updateNotificationGroup() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - val notificationManager = getNotificationManager() - val activeNotifications = notificationManager.activeNotifications - var downloadNotificationSize = 0 - var downloadGroupNotificationSize = 0 - for (activeNotification in activeNotifications) { - if (activeNotification.id == DOWNLOAD_NOTIFICATION_ID) { - downloadNotificationSize++ + // 部分华为设备调用 getActiveNotifications() 方法时会触发方法内的空指针,这里整体包裹处理了 + tryCatchInRelease { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + val notificationManager = getNotificationManager() + val activeNotifications = notificationManager.activeNotifications + var downloadNotificationSize = 0 + var downloadGroupNotificationSize = 0 + for (activeNotification in activeNotifications) { + if (activeNotification.id == DOWNLOAD_NOTIFICATION_ID) { + downloadNotificationSize++ + } + if (activeNotification.id == DOWNLOAD_NOTIFICATION_FOLD_ID) { + downloadGroupNotificationSize++ + } } - if (activeNotification.id == DOWNLOAD_NOTIFICATION_FOLD_ID) { - downloadGroupNotificationSize++ - } - } - if (downloadNotificationSize == 0 && downloadGroupNotificationSize != 0) { - // 删除组可能会把组内所有通知一并删除 - notificationManager.cancel(DOWNLOAD_NOTIFICATION_FOLD_ID) - } else if (downloadNotificationSize != 0 && downloadGroupNotificationSize == 0) { - val groupBuilder = NotificationCompat.Builder(HaloApp.getInstance().application, DOWNLOAD_CHANNEL_ID) - .setSmallIcon(R.mipmap.logo) - .setGroup(DOWNLOAD_GROUP_KEY) - .setGroupSummary(true) - .setStyle(NotificationCompat.BigTextStyle().bigText("下载任务")) - val groupNotification = groupBuilder.build() - groupNotification.flags = groupNotification.flags or Notification.FLAG_NO_CLEAR - notificationManager.notify(DOWNLOAD_NOTIFICATION_FOLD_ID, groupNotification) + if (downloadNotificationSize == 0 && downloadGroupNotificationSize != 0) { + // 删除组可能会把组内所有通知一并删除 + notificationManager.cancel(DOWNLOAD_NOTIFICATION_FOLD_ID) + } else if (downloadNotificationSize != 0 && downloadGroupNotificationSize == 0) { + val groupBuilder = NotificationCompat.Builder(HaloApp.getInstance().application, DOWNLOAD_CHANNEL_ID) + .setSmallIcon(R.mipmap.logo) + .setGroup(DOWNLOAD_GROUP_KEY) + .setGroupSummary(true) + .setStyle(NotificationCompat.BigTextStyle().bigText("下载任务")) + val groupNotification = groupBuilder.build() + groupNotification.flags = groupNotification.flags or Notification.FLAG_NO_CLEAR + notificationManager.notify(DOWNLOAD_NOTIFICATION_FOLD_ID, groupNotification) + } } } }