2013-05-08 9 views
30

enter image description here La documentazione dice Notification.Builder viene aggiunto in livello API 11. Perché si verifica questo errore?La chiamata richiede il livello API 16 (min corrente 14): android.app.Notification.Builder # build

chiamata richiede livello di API 16 (corrente min è 14): android.app.Notification.Builder # costruire

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

manifesto:

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

Mi sto perdendo qualcosa?

Correggimi se ho torto ma l'API è stata aggiunta nel livello 11, giusto? Added in API level 11

+0

http://tools.android.com/tips/lint-checks. Si tratta di un avvertimento di lanuggine che richiede che l'editor di notifiche api 16 – Raghunandan

+1

scorra verso il basso nella stessa pagina e controlli l'argomento sotto i metodi pubblici – Raghunandan

+0

Grazie. il metodo build è stato aggiunto nel livello 16 ... – pt2121

risposta

54

NotificationBuilder.build() Richiede il livello 16 o superiore API. Qualunque cosa tra API Level 11 & 15 dovresti usare NotificationBuilder.getNotification(). Quindi utilizzare

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

commento di cortesia Cammille in questa risposta http://stackoverflow.com/a/8869647/931982 – stinepike

+0

Vuoi dire che il documento è sbagliato? si dice che l'API è stata aggiunta nel Livello 11. – pt2121

+0

non non è sbagliato .. controlla i link che ho fornito in risposta .. c'è chiaramente writtern che build proviene da API 16. – stinepike

5

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

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

Per l'elenco dei controlli lint

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

Per sopprimendo pelucchi avvertimento

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 utilizzare NotificationCompat.Builder, disponibile nella libreria di supporto Android.

Per libreria di supporto

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

14

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()); 
} 

ho avuto il problema in cui la notifica ha funzionato bene su dispositivi più recenti, ma non su Android 4.0.4 (livello di API 15). Ricevo un modulo di avviso di deprecazione eclissi. @SuppressWarnings ("deprecazione") non lo nasconde completamente ma penso che sia probabilmente utile.

2

È possibile utilizzare da questa:

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); 
      } 
-2

Ho lo stesso problema in studio Android. Ho apportato lievi modifiche nel file build.gradle (modulo: app) e il problema è stato risolto. enter image description here

Dopo il progetto di sincronizzazione.

Problemi correlati