que punto permitir oreo notificación notificaciones notificacion globo flotantes barra android notifications android-8.0-oreo

punto - Notificación de notificación de Android O no publicada en el canal, pero es



punto de notificación android (7)

Creo que he aprendido un par de cosas que se suman a una respuesta:

  1. Estaba usando un dispositivo emulador, con una imagen que no incluía Play Store.
  2. La versión de Google Play Services en la imagen no era la última, por lo que debería haber recibido una notificación que me indicara que necesitaba actualizar. Como esa notificación no se aplicó a un canal, no apareció.
  3. Si configuro Logcat en Android Studio a "Sin filtros" en lugar de "Mostrar solo la aplicación seleccionada", entonces encontré los registros que señalaban que la notificación en cuestión era la notificación de "Servicios necesarios" de actualización.

Entonces, cambié a una imagen con Play Store incluido, y mostró la notificación correctamente (¿tal vez el canal para esa notificación iba a ser configurado por Play Store?), Déjame actualizar a los últimos servicios de Google Play, y me arrepiento No he visto esa advertencia desde entonces.

Por lo tanto, para abreviar (demasiado tarde): con Android O, si está utilizando Google Play Services y pruebas en el emulador, elija una imagen con Play Store incluido o ignore el brindis (¡buena suerte con eso!).

Preguntas de notificación de par de Android O:

1) He creado un canal de notificación (ver a continuación), estoy llamando al constructor con .setChannelId () (pasando el nombre del canal que creé, "wakey"; y sin embargo, cuando ejecuto la aplicación, recibo un mensaje que no publiqué una notificación para canalizar "nulo". ¿Qué podría estar causando esto?

2) Sospecho que la respuesta al # 1 se puede encontrar en el "registro" que dice verificar, pero he comprobado Logcat y no veo nada sobre notificaciones o canales. ¿Dónde está el registro que dice mirar?

Aquí está el código que estoy usando para crear el canal:

NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); CharSequence name = context.getString(R.string.app_name); String description = "yadda yadda" int importance = NotificationManager.IMPORTANCE_DEFAULT; NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL, name, importance); channel.setDescription(description); notificationManager.createNotificationChannel(channel);

Aquí está el código para generar la notificación:

Notification.Builder notificationBuilder; Intent notificationIntent = new Intent(context, BulbActivity.class); notificationIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); // Fix for https://code.google.com/p/android/issues/detail?id=53313 PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); Intent serviceIntent = new Intent(context, RemoteViewToggleService.class); serviceIntent.putExtra(WakeyService.KEY_REQUEST_SOURCE, WakeyService.REQUEST_SOURCE_NOTIFICATION); PendingIntent actionPendingIntent = PendingIntent.getService(context, 0, serviceIntent, PendingIntent.FLAG_CANCEL_CURRENT); _toggleAction = new Notification.Action(R.drawable.ic_power_settings_new_black_24dp, context.getString(R.string.toggle_wakey), actionPendingIntent); notificationBuilder= new Notification.Builder(context) .setContentTitle(context.getString(R.string.app_name)) .setContentIntent(contentIntent) .addAction(_toggleAction); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { notificationBuilder.setChannelId(NOTIFICATION_CHANNEL); } notificationBuilder.setSmallIcon(icon); notificationBuilder.setContentText(contentText); _toggleAction.title = actionText; int priority = getNotificationPriority(context); notificationBuilder.setPriority(priority); notificationBuilder.setOngoing(true); Notification notification = notificationBuilder.build(); notificationManager.notify(NOTIFICATION_ID, notification);

Y aquí está la advertencia que estoy recibiendo:


Estaba enfrentando el mismo problema. Se resolvió creando un NotificationChannel y agregando ese canal recién creado con el administrador de notificaciones.


Primero crea el canal de notificación:

public static final String NOTIFICATION_CHANNEL_ID = "4565"; //Notification Channel CharSequence channelName = NOTIFICATION_CHANNEL_NAME; int importance = NotificationManager.IMPORTANCE_LOW; NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, NOTIFICATION_CHANNEL_NAME, importance); notificationChannel.enableLights(true); notificationChannel.setLightColor(Color.RED); notificationChannel.enableVibration(true); notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(notificationChannel);

luego usa la identificación del canal en el constructor:

final NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID) .setDefaults(Notification.DEFAULT_ALL) .setSmallIcon(R.drawable.ic_timers) .setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}) .setSound(null) .setChannelId(NOTIFICATION_CHANNEL_ID) .setContent(contentView) .setPriority(NotificationCompat.PRIORITY_DEFAULT) .setLargeIcon(picture) .setTicker(sTimer) .setContentIntent(pendingIntent) .setAutoCancel(false);


Primero debes crear un NotificationChannel

val notificationChannel = NotificationChannel("channelId", "channelName", NotificationManager.IMPORTANCE_DEFAULT) notificationManager.createNotificationChannel(notificationChannel);

Esta es la única forma de mostrar notificaciones para API 26+


También me gustaría agregar que recibirás este error si estás usando herramientas de compilación v26 +:

app / build.grade :

compileSdkVersion 26 buildToolsVersion "26.0.2" defaultConfig { targetSdkVersion 26

La degradación a la versión más baja debería funcionar bien.


Tuve el mismo problema y lo resolví usando el constructor

new Notification.Builder(Context context, String channelId) , en lugar del que está en deprecated niveles de API> = 26 (Android O): new NotificationCompat.Builder(Context context)

El siguiente código no funcionará si su notificationBuilder se crea utilizando el constructor en desuso:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { notificationBuilder.setChannelId(NOTIFICATION_CHANNEL);}


crea una notificación usando el siguiente código:

Notification notification = new Notification.Builder(MainActivity.this) .setContentTitle("New Message") .setContentText("You''ve received new messages.") .setSmallIcon(R.mipmap.ic_launcher) .setChannelId(channelId) .build();

no usando :

Notification notification = new NotificationCompat.Builder(MainActivity.this) .setContentTitle("Some Message") .setContentText("You''ve received new messages!") .setSmallIcon(R.mipmap.ic_launcher) .setChannel(channelId) .build();