studio oreo notification how developer create android android-notifications android-8.0-oreo

oreo - how to create notification channel in android



Notification.Builder(contexto) desaprobado Android O (3)

Debe definir un ID de canal único (por ejemplo, "MyChannelId_01") y llamar a NotificationCompat.Builder (ctx, "MyChannelId_01"). La Notificación construida se publicará en este NotificationChannel "MyChannelId_01".

Esto le permite definir la importancia de la notificación (esto controla la forma en que las notificaciones enviadas a este canal son. El valor es IMPORTANCE_UNSPECIFIED, IMPORTANCE_NONE, IMPORTANCE_MIN, IMPORTANCE_LOW, IMPORTANCE_DEFAULT o IMPORTANCE_HIGH).

Puedes encontrar un ejemplo aquí: Creando un canal de notificación

Esta pregunta ya tiene una respuesta aquí:

Notification.Builder (contexto) ha quedado en desuso recientemente con la sede de Notification Channels en Android O.

PROBLEMA:

Después de usar Notification.Builder(context, StringID) lugar de Notification.Builder(context) , recibí una notificación a mi dispositivo Android O.
Sin embargo, después de probar eso en un Android 23 (M), no recibí una notificación. Depuré mi código y simplemente dejé de ejecutarlo una vez que el depurador llegó a la línea posterior a Notification.Builder (contexto, StringID) en Android 23 (M).

FIJAR:

Para solucionar este problema, utilicé la condición if / else para segregar entre los dispositivos Android O y el resto de otros dispositivos.

Tengo el siguiente fragmento de código:

Notification.Builder notificationBuilder; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { notificationBuilder = new Notification.Builder(mContext, mContext.getResources().getString(R.string.notification_id_channel)); } else { notificationBuilder = new Notification.Builder(mContext); }

Lint en Android Studio muestra la siguiente línea de desaprobación:

PREGUNTA:

¿Hay alguna manera de deshacerse de esa línea de advertencia de depreciación?


Su solución es utilizar NotificationCompat.Builder(Context context, String channelId) . Si usa esto, no tiene que verificar el nivel de API, el Generador ignora la identificación del canal en los dispositivos pre-Oreo.

Lo he probado en API 15, 22, 23 y 26 y funciona perfectamente.


Tuve el mismo problema y, como estoy apuntando a Android 22 y 24, acabo de hacer esto: NotificationCompat.Builder notification = new NotificationCompat.Builder (MainActivity.this, "")

Estoy seguro de que alguien dirá que esto es un pirateo pero se deshace de la advertencia y no tengo problemas.

Parece que pasar una cadena vacía funciona para <android 26.

Tal vez alguien más pueda decir si esto causa problemas para 26.

Gracias