Обычный Notification Builder не показывает уведомления на Android O.
Как я могу показать уведомление на Android 8 Oreo?
Есть ли новый фрагмент кода, который нужно добавить для отображения уведомлений на Android O?
Обычный Notification Builder не показывает уведомления на Android O.
Как я могу показать уведомление на Android 8 Oreo?
Есть ли новый фрагмент кода, который нужно добавить для отображения уведомлений на Android O?
Ответы:
В Android O обязательно использовать канал с вашим Notification Builder
ниже приведен пример кода:
Или с совместимостью по обработке:
или, если вы хотите простое исправление, используйте следующий код:
Обновления: NotificationCompat.Builder ссылка
Этот конструктор устарел на уровне API 26.0.0, поэтому вы должны использовать
так что нет необходимости
setChannelId
с новым конструктором.И вы должны использовать последнюю версию библиотеки AppCompat в настоящее время 26.0.2
Источник с канала Android Developers на Youtube
Кроме того, вы можете проверить официальные документы для Android
источник
NotificationCompat.Builder(Context, String)
конструктор? Я использую (среди прочего): -compileSdkVersion 26
-buildToolsVersion '26.0.2'
-compile 'com.android.support:appcompat-v7:26.0.0-beta2'
и все же он все еще не принимает мой конструктор, используя Context и String. Любые идеи?Здесь я публикую некоторую функцию быстрого решения с обработкой намерений
источник
В дополнение к этому ответу необходимо создать канал уведомлений, прежде чем его можно будет использовать.
Также вам нужно использовать каналы, только если ваш targetSdkVersion равен 26 или выше.
Если вы используете NotificationCompat.Builder, вам также необходимо обновить бета-версию библиотеки поддержки: https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-0- бета2 (чтобы иметь возможность звонить
setChannelId
компат строитель).Будьте осторожны, поскольку это обновление библиотеки повышает minSdkLevel до 14.
источник
источник
Если вы не можете получить push-уведомление в 26+ версии SDK?
NotificationCompat.BuildertificationBuilder = новый NotificationCompat.Builder (context, channel_id)
-> Здесь вы получите push-уведомление
channel_id
на вашем устройстве, которое состоит из 26+ версий SDK.-> Поскольку
NotificationCompat.Builder(context)
метод устарел, теперь вы будете использовать обновленную версию, имеющую два параметра, один - контекст, другой - channel_id.->
NotificationCompat.Builder(context, channel_id)
обновленный метод. попытайся.-> В 26+ SDK-версии устройства вы будете каждый раз создавать channel_id.
источник
Используйте этот класс для уведомлений Android 8
источник
Попробуйте этот код:
источник
Демо-приложение Android Notification для Android O, а также более низкие версии API. Вот лучшее демо-приложение на GitHub-Demo 1 и GitHub-Demo 2 .
источник
Это ошибка в Firebase API версии 11.8.0, так что если вы уменьшите версию API, вы не столкнетесь с этой проблемой.
источник
У меня возникла та же проблема с Oreo, и я обнаружил, что если вы сначала создадите свой канал с NotificationManager.IMPORTANCE_NONE, а затем обновите его, канал сохранит исходный уровень важности.
Это подтверждается учебной документацией Google Notification, в которой говорится:
Удаление и переустановка приложения позволит вам сбросить поведение канала.
Лучше всего избегать использования IMPORTANCE_NONE, если вы не хотите подавлять уведомления для этого канала, т. Е. Использовать тихие уведомления.
источник
Вот как ты это делаешь
Прочитайте полное руководство по адресу => https://developer.android.com/training/notify-user/build-notification
источник
CHANNEL_ID
в NotificationChannel и Notification.Builder должны быть одинаковыми, попробуйте этот код:источник
Ну, в моем случае у меня Android 8.1.0 и номер модели vivo1811 , и я пробовал все вышеперечисленные решения, но ничего не работает.
Итак, наконец, я написал в службу поддержки Firebase, а затем при дальнейшей отладке я получил следующее сообщение: «Не удалось передать вещание остановленному приложению»: убедитесь, что приложение не было принудительно остановлено » .
И это был ответ от команды Firebase ->
Здесь OEM обозначает производителя оригинального оборудования .
источник
Для тех, кто борется с этим после того, как попробовал вышеуказанные решения, убедитесь, что идентификатор канала, используемый при создании канала уведомления, идентичен идентификатору канала, который вы задали в построителе уведомлений.
источник
источник
Следующий метод покажет уведомление , с включенным большим текстом и заморозкой (Уведомление не будет удалено даже после пользовательских перелистываний). Нам нужен сервис NotificationManager
Способ удаления уведомлений
Ссылка на источник
источник
уже не рекомендуется для версии больше или равно Android Oreo. Вы можете изменить реализацию на использование
источник
источник
Следующий фрагмент кода работает для меня в Oreo, вы можете попробовать это. надеюсь, что это будет работать для вас
private void sendNotification (контекст ctx, заголовок строки, номер уведомления int, сообщение строки, подтекст строки, намерение намерения) {
try {
источник
В Android Oreo приложение для уведомлений выполняется с использованием каналов и класса NotificationHelper. Оно должно иметь идентификатор канала и название канала.
Сначала вы должны создать класс NotificationHelper
Создайте кнопку в файле активности XML, затем в основной деятельности
Затем запустите ваш проект
источник
Вам необходимо создать канал уведомлений для уровня API выше 26 (oreo).
STRING_ID = строка уведомления о канале такая же, как в Notification.Builder, как это
Идентификатор канала в уведомлении и в уведомлении должен быть одинаковым Весь код выглядит следующим образом .. `
источник
Прежде всего, если вы не знаете, из Android Oreo, то есть API уровня 26, обязательно, чтобы уведомления повторно передавались по каналу.
В этом случае многие учебники могут сбить вас с толку, потому что они показывают другой пример для уведомлений выше или ниже.
Итак, вот общий код, который работает как выше, так и ниже:
Видеоурок: YOUTUBE VIDEO
Если вы хотите скачать эту демоверсию: GitHub Link
источник
источник