traduccion notificationcompat notificationchannel notification example ejemplo android android-lint

notificationcompat - La llamada requiere API nivel 16(el mínimo actual es 14): android.app.Notification.Builder#build



notifications android example (5)

La documentación dice que Notification.Builder se agrega en el nivel 11 de la API. ¿Por qué obtengo este error de pelusa?

La llamada requiere API nivel 16 (el mínimo actual es 14): android.app.Notification.Builder # build

notification = new Notification.Builder(ctx) .setContentTitle("Title").setContentText("Text") .setSmallIcon(R.drawable.ic_launcher).build();

Manifiesto:

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />

¿Me estoy perdiendo de algo?

Corrígeme si estoy equivocado, pero la API se agrega en el nivel 11, ¿verdad? Agregado en el nivel de API 11


Android Lint es una nueva herramienta presentada en ADT 16 (y Tools 16) que escanea las fuentes del proyecto de Android en busca de posibles errores. Está disponible tanto como una herramienta de línea de comando, como integrada con Eclipse

http://tools.android.com/tips/lint

Para la lista de verificaciones de pelusa

tools.android.com/tips/lint-checks

Para suprimir la advertencia de pelusas

http://tools.android.com/tips/lint/suppressing-lint-warnings

http://developer.android.com/reference/android/app/Notification.Builder.html

Si su aplicación admite versiones de Android tan antiguas como el nivel 4 de la API, puede utilizar NotificationCompat.Builder, disponible en la biblioteca de soporte de Android.

Para la biblioteca de soporte

http://developer.android.com/tools/extras/support-library.html


El consejo sobre el nivel de API que necesita ser 16 es correcto. Esto funcionó para mí

if (Build.VERSION.SDK_INT < 16) { nm.notify(MY_NOTIFICATION_ID, notificationBuilder.getNotification()); } else { nm.notify(MY_NOTIFICATION_ID, notificationBuilder.build()); }

Estaba teniendo el problema de que la notificación funcionaba bien en los dispositivos más nuevos, pero no en Android 4.0.4 (API de nivel 15). Obtengo un eclipse de advertencia de depreciación. @SuppressWarnings ("desaprobación") no lo oculta por completo, pero creo que probablemente sea útil.


Puedes usar de esto:

if (Build.VERSION.SDK_INT < 16) { Notification n = new Notification.Builder(this) .setContentTitle("New mail from " + "[email protected]") .setContentText("Subject") .setSmallIcon(R.mipmap.ic_launcher) .setContentIntent(pIntent) .setAutoCancel(true).getNotification(); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(0, n); } else { Notification n = new Notification.Builder(this) .setContentTitle("New mail from " + "[email protected]") .setContentText("Subject") .setSmallIcon(R.mipmap.ic_launcher) .setContentIntent(pIntent) .setAutoCancel(true).build(); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(0, n); }


Tengo el mismo problema en el estudio de Android. Hice un cambio menor en el archivo build.gradle (módulo: aplicación) y se solucionó el problema.

Después del proyecto de sincronización.


NotificationBuilder.build() requiere API nivel 16 o superior. Cualquier cosa entre los niveles API 11 y 15, debe usar NotificationBuilder.getNotification() . Entonces usa

notification = new Notification.Builder(ctx) .setContentTitle("Title").setContentText("Text") .setSmallIcon(R.drawable.ic_launcher).getNotification();