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) + } } } }