Builder android content context is deprecated

NotificationCompat.Строитель устаревшими в нашем о

после обновления моего проекта до Android O

Lint в Android Studio показывает устаревшее предупреждение для метода follow notification builder:

проблема: разработчики Android обновляют свою документацию, описывающую NotificationChannel для поддержки уведомлений в Android O, и предоставить нам фрагмент, но с тем же устаревшим внимание:

мой вопрос: есть ли какое-либо другое решение для создания уведомлений и по-прежнему поддерживает Android O?

решение, которое я нашел, состоит в том, чтобы передать идентификатор канала в качестве параметра в уведомлении.Строитель конструктор. Но это решение не совсем многоразовые.

8 ответов:

в документации упоминается, что метод builder NotificationCompat.Builder(Context context) была прекращена. И мы должны использовать конструктор, который имеет

вот рабочий код для всех версий android от УРОВЕНЬ API 26+ С обратной совместимостью.

обновление для API 26 для установки максимального приоритета

вызовите конструктор 2-arg: для совместимости с Android O, позвоните в службу поддержки-v4 NotificationCompat.Builder(Context context, String channelId) . При запуске на Android N или ранее channelId будет проигнорировано. При запуске на Android O, также создать NotificationChannel С таким же channelId .

устаревший пример кода: пример кода на нескольких страницах JavaDoc, таких как уведомления.Строитель вызов new Notification.Builder(mContext) устарело.

устаревший конструкторы: Notification.Builder(Context context) и v4 NotificationCompat.Builder(Context context) являются устаревшими в пользу Notification[Compat].Builder(Context context, String channelId) . (См.уведомления.Строитель(андроид.содержание.Контекст) и v4 NotificationCompat.Строитель (контекст контекст).)

нерекомендуемый класс: весь класс v7 NotificationCompat.Builder устарела. (См.NotificationCompat В7.Строитель.) Ранее, В7 NotificationCompat.Builder нужна была поддержка NotificationCompat.MediaStyle . В Android O есть v4 NotificationCompat.MediaStyle на библиотека media-compat ‘ s android.support.v4.media пакета. Используйте это, если вам нужно MediaStyle .

API 14+: в библиотеке поддержки от 26.0.0 и выше пакеты support-v4 и support-v7 поддерживают минимальный уровень API 14. Имена v# являются историческими.

вместо проверки Build.VERSION.SDK_INT >= Build.VERSION_CODES.O как показывают многие ответы, есть немного более простой способ —

добавить следующую строку на AndroidManifest.xml файл, как описано в настройка клиентского приложения Firebase Cloud Messaging на Android doc:

затем добавьте строку с именем канала в значения/строки.xml file:

после этого вы сможете использовать новые версии из NotificationCompat.Строитель конструктор с 2 параметрами (так как старый конструктор с 1 параметром был устаревшим в Android Oreo):

вот пример кода, который работает в Android Oreo и меньше, чем Oreo.

Источник

NotificationCompat.Builder устарел в Android O

После обновления моего проекта до Android O

Lint в Android Studio показывает устаревшее предупреждение для следующего метода построения уведомлений:

Проблема в том, что разработчики Android обновляют свою Документацию с описанием NotificationChannel для поддержки уведомлений в Android O и предоставляют нам фрагмент кода, но с тем же устаревшим предупреждением:

Мой вопрос: есть ли какое-либо другое решение для создания уведомлений, и все еще поддерживает Android O?

Читайте также:  Warcraft iii для андроид

Решение, которое я нашел, состоит в том, чтобы передать идентификатор канала в качестве параметра в конструкторе Notification.Builder. Но это решение не является многоразовым.

В документации упоминается, что метод NotificationCompat.Builder(Context context) построения устарел. И мы должны использовать конструктор, который имеет channelId параметр:

Этот конструктор устарел на уровне API 26.0.0-бета1. используйте взамен NotificationCompat.Builder (Context, String). Во всех опубликованных уведомлениях должен быть указан NotificationChannel Id.

Этот конструктор устарел на уровне API 26. Вместо этого используйте Notification.Builder (Context, String). Во всех опубликованных уведомлениях должен быть указан NotificationChannel Id.

Если вы хотите повторно использовать установщики компоновщика, вы можете создать компоновщик с помощью channelId и передать его компоновщику вспомогательному методу и установить в нем предпочтительные параметры.

Вот рабочий код для всех версий Android от API LEVEL 26+ с обратной совместимостью.

ОБНОВЛЕНИЕ для API 26, чтобы установить максимальный приоритет

Вызов конструктора с двумя аргументами. Для совместимости с Android O вызовите support-v4 NotificationCompat.Builder(Context context, String channelId) . При работе на Android N или более ранних channelId версиях будет игнорироваться. При запуске на Android O, также создайте NotificationChannel с тем же channelId .

Пример кода с устаревшей версией : Пример кода на нескольких страницах JavaDoc, например, вызов Notification.Builder new Notification.Builder(mContext) , устарел.

Устаревшие конструкторы: Notification.Builder(Context context) и v4 NotificationCompat.Builder(Context context) устарели в пользу Notification[Compat].Builder(Context context, String channelId) . (См. Notification.Builder (android.content.Context) и v4 NotificationCompat.Builder (Контекстный контекст) .)

Устаревший класс: весь класс v7 NotificationCompat.Builder устарел. (См. V7 NotificationCompat.Builder .) Ранее NotificationCompat.Builder для поддержки требовался v7 NotificationCompat.MediaStyle . В Android O, есть v4 NotificationCompat.MediaStyle в медиа-библиотеке Compat «s android.support.v4.media пакет. Используйте это, если вам нужно MediaStyle .

API 14+: в библиотеке поддержки от 26.0.0 и выше пакеты support-v4 и support-v7 поддерживают минимальный уровень API 14. Имена v # являются историческими.

Вместо того, чтобы проверять Build.VERSION.SDK_INT >= Build.VERSION_CODES.O так много ответов, есть несколько более простой способ —

Добавьте следующую строку в application раздел файла AndroidManifest.xml, как описано в разделе « Настройка клиентского приложения Firebase Cloud Messaging для Android» :

Затем добавьте строку с именем канала в файл values ​​/ strings.xml :

После этого вы сможете использовать новую версию конструктора NotificationCompat.Builder с 2 параметрами (поскольку старый конструктор с 1 параметром устарел в Android Oreo):

Вот пример кода, который работает в Android Oreo и меньше, чем Oreo.

Источник

NotificationCompat.Builder устарел в Android O

После обновления моего проекта до Android O

Lint в Android Studio показывает устаревшее предупреждение для следующего метода построения уведомлений:

Проблема в том, что разработчики Android обновляют свою документацию, описывающую NotificationChannel , для поддержки уведомлений в Android O, и предоставляют нам фрагмент кода, но с тем же устаревшим предупреждением:

Мой вопрос . Есть ли какое-либо другое решение для создания уведомлений и все еще поддерживается Android O?

Я нашел решение передать идентификатор канала в качестве параметра в конструкторе Notification.Builder. Но это решение не является многоразовым.

Читайте также:  Huawei p30 pro андроид 11 дата выхода

9 ответов

В документации упоминается, что метод построителя NotificationCompat.Builder(Context context) устарел. И мы должны использовать конструктор, который имеет параметр channelId :

Этот конструктор устарел на уровне API 26.0.0-бета1. используйте взамен NotificationCompat.Builder (Context, String). Во всех опубликованных уведомлениях должен быть указан NotificationChannel Id.

Этот конструктор устарел на уровне API 26. Вместо этого используйте Notification.Builder (Context, String). Во всех опубликованных уведомлениях должен быть указан NotificationChannel Id.

Если вы хотите повторно использовать установщики компоновщика, вы можете создать компоновщик с помощью channelId , передать его в вспомогательный метод и установить в нем предпочтительные параметры.

Вместо проверки Build.VERSION.SDK_INT >= Build.VERSION_CODES.O , как предлагают многие ответы, есть немного более простой способ —

Добавьте следующую строку в раздел application файла AndroidManifest.xml , как описано в Настройка клиентского приложения Firebase Cloud Messaging на Android doc:

Затем добавьте строку с именем канала в файл values / strings.xml :

После этого вы сможете использовать новую версию Конструктор NotificationCompat.Builder с 2 параметрами (поскольку старый конструктор с 1 параметром устарел в Android Oreo):

Вызовите 2-аргументный конструктор. Для совместимости с Android O вызовите support-v4 NotificationCompat.Builder(Context context, String channelId) . При работе на Android N или более ранних версиях channelId будет игнорироваться. При работе на Android O также создайте NotificationChannel с тем же channelId .

Образец устаревшего кода: пример кода на нескольких страницах JavaDoc, например Notification.Builder, вызывающий new Notification.Builder(mContext) , устарел.

Устаревшие конструкторы: Notification.Builder(Context context) и v4 NotificationCompat.Builder(Context context) устарели в пользу Notification[Compat].Builder(Context context, String channelId) . (См. Notification.Builder ( android.content.Context) и v4 NotificationCompat.Builder (контекстный контекст).)

Устаревший класс: Весь класс v7 NotificationCompat.Builder устарел. (См. v7 NotificationCompat.Builder.) Ранее , v7 NotificationCompat.Builder был необходим для поддержки NotificationCompat.MediaStyle . В Android O есть v4 NotificationCompat.MediaStyle в media-compat library android.support.v4.media . Используйте это, если вам нужно MediaStyle .

API 14 +: . В библиотеке поддержки от 26.0.0 и выше пакеты support-v4 и support-v7 поддерживают минимальный уровень API 14. Имена v # являются историческими.

Вот пример кода, который работает в Android Oreo и меньше, чем Oreo.

Источник

NotificationCompat.Builder deprecated in Android O

After upgrading my project to Android O

Lint in Android Studio is showing a deprecated warning for the follow notification builder method:

The problem is: Android Developers update their Documentation describing NotificationChannel to support notifications in Android O, and provide us with a snippet, yet with the same deprecated warning:

My question: Is there is any other solution for building notification, and still support Android O?

A solution I found is to pass the channel ID as a parameter in Notification.Builder constructor. But this solution is not exactly reusable.

It is mentioned in the documentation that the builder method NotificationCompat.Builder(Context context) has been deprecated. And we have to use the constructor which has the channelId parameter:

Читайте также:  Linphone android не работает

This constructor was deprecated in API level 26.0.0-beta1. use NotificationCompat.Builder(Context, String) instead. All posted Notifications must specify a NotificationChannel Id.

This constructor was deprecated in API level 26. use Notification.Builder(Context, String) instead. All posted Notifications must specify a NotificationChannel Id.

If you want to reuse the builder setters, you can create the builder with the channelId, and pass that builder to a helper method and set your preferred settings in that method.

Here is working code for all android versions as of API LEVEL 26+ with backward compatibility.

UPDATE for API 26 to set Max priority

Call the 2-arg constructor: For compatibility with Android O, call support-v4 NotificationCompat.Builder(Context context, String channelId) . When running on Android N or earlier, the channelId will be ignored. When running on Android O, also create a NotificationChannel with the same channelId .

Out of date sample code: The sample code on several JavaDoc pages such as Notification.Builder calling new Notification.Builder(mContext) is out of date.

Deprecated constructors: Notification.Builder(Context context) and v4 NotificationCompat.Builder(Context context) are deprecated in favor of Notification[Compat].Builder(Context context, String channelId) . (See Notification.Builder(android.content.Context) and v4 NotificationCompat.Builder(Context context).)

Deprecated class: The entire class v7 NotificationCompat.Builder is deprecated. (See v7 NotificationCompat.Builder.) Previously, v7 NotificationCompat.Builder was needed to support NotificationCompat.MediaStyle . In Android O, there’s a v4 NotificationCompat.MediaStyle in the media-compat library’s android.support.v4.media package. Use that one if you need MediaStyle .

API 14+: In Support Library from 26.0.0 and higher, the support-v4 and support-v7 packages both support a minimum API level of 14. The v# names are historical.

See Recent Support Library Revisions.

Instead of checking for Build.VERSION.SDK_INT >= Build.VERSION_CODES.O as many answers suggest, there is a slightly simpler way —

Add the following line to the application section of AndroidManifest.xml file as explained in the Set Up a Firebase Cloud Messaging Client App on Android doc:

Then add a line with a channel name to the values/strings.xml file:

After that you will be able to use the new version of NotificationCompat.Builder constructor with 2 parameters (since the old constructor with 1 parameter has been deprecated in Android Oreo):

Here is the sample code, which is working in Android Oreo and less than Oreo.

Right code will be :

with dependency 26.0.1 and new updated dependencies such as 28.0.0.

Some users use this code in the form of this :

So Logic is that which Method you will declare or initilize then the same methode on Right side will be use for Allocation. if in Leftside of = you will use some method then the same method will be use in right side of = for Allocation with new.

Источник

Оцените статью