Я хочу, чтобы в приложении отображалось уведомление, которое исчезает при касании уведомления без запуска действия.
Я использую пустое намерение, и оно работает:
Intent intent = new Intent();
PendingIntent contentIntent = PendingIntent.getActivity(context, (int)System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, "")
.setSmallIcon(R.drawable.icon)
.setContentTitle(title)
.setContentText(text)
.setAutoCancel(true)
.setTicker(text);
.setContentIntent(contentIntent);
Однако есть некоторые сбои:
java.lang.RuntimeException: bad array lengths
at android.os.Parcel.readIntArray(Parcel.java:789)
at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:339)
at android.app.NotificationManager.notify(NotificationManager.java:139)
at android.app.NotificationManager.notify(NotificationManager.java:112)
...
Согласно этому SO-ответу кажется, что сбои происходят из-за того, что intent
не запускает действие.
Уведомление может быть отклонено по его идентификатору, но я не могу отклонить его, если нет активности для запуска и вызова метода dismiss.
Как я могу отклонить уведомление при нажатии внутри приложения, не используя пустое намерение?
Обновление:
Согласно это ТАК вопросы , похоже, проблема с Android. Сообщения о сбоях, которые я получил, также произошли на Android 4.3.
Обновление 2:
Согласно этому SO-ответу это, похоже, связано с слишком большим битовым массивом, установленным с setLargeIcon
. Теперь я уменьшаю размер растрового изображения с помощью Glide.