La chiamata richiede il livello API 16 (il minimo corrente è 14): android.app.Notification.Builder # build

inserisci la descrizione dell'immagine qui La documentazione dice che Notification.Builder è stato aggiunto al livello API 11. Perché ho ricevuto questo errore?

La chiamata richiede il livello API 16 (il minimo corrente è 14): android.app.Notification.Builder # build

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

Manifesto:

  

Mi sto perdendo qualcosa?

Correggimi se sbaglio, ma l’API è stata aggiunta al livello 11, giusto? Aggiunto in livello API 11

NotificationBuilder.build () richiede API di livello 16 o superiore. Qualunque cosa tra API 11 e 15 devi usare NotificationBuilder.getNotification () . Quindi usa

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

Il suggerimento circa il livello API che deve essere 16 è giusto. Questo ha funzionato per me

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

Stavo avendo il problema dove la notifica funzionava bene su dispositivi più recenti ma non su Android 4.0.4 (livello API 15). Ricevo un modulo di avviso di deprecazione eclipse. @SuppressWarnings ("deprecazione") non lo nasconde completamente ma penso che sia probabilmente utile.

Android Lint è un nuovo strumento introdotto in ADT 16 (e Tools 16) che analizza le origini del progetto Android per potenziali bug. È disponibile sia come strumento da riga di comando, sia integrato con Eclipse

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

Per l’elenco dei controlli dei pelucchi

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

Per la soppressione di avvertenze sui pelucchi

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

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

Se la tua app supporta versioni di Android precedenti all’API di livello 4, puoi invece utilizzare NotificationCompat.Builder, disponibile nella libreria di supporto Android.

Per la libreria di supporto

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

Puoi usare da questo:

 if (Build.VERSION.SDK_INT < 16) { Notification n = new Notification.Builder(this) .setContentTitle("New mail from " + "test@gmail.com") .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 " + "test@gmail.com") .setContentText("Subject") .setSmallIcon(R.mipmap.ic_launcher) .setContentIntent(pIntent) .setAutoCancel(true).build(); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(0, n); } 

Ho lo stesso problema in Android Studio. Ho apportato piccole modifiche nel file build.gradle (module: app) e il problema è stato risolto. inserisci la descrizione dell'immagine qui

Dopo il progetto di sincronizzazione.