web-dev-qa-db-fra.com

L'appel nécessite le niveau d'API 16 (la valeur minimale actuelle est de 14): Android.app.Notification.Builder # build

enter image description hereLa documentation indique que Notification.Builder est ajouté au niveau d'API 11. Pourquoi j'obtiens cette erreur de peluche?

L'appel nécessite le niveau d'API 16 (la valeur minimale actuelle est de 14): Android.app.Notification.Builder # build

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

Manifeste:

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

Suis-je en train de manquer quelque chose?

Corrigez-moi si je me trompe mais l'API est ajoutée au niveau 11, non? Ajouté au niveau API 11

31
pt2121

NotificationBuilder.build () nécessite l'API de niveau 16 ou supérieur. Tout ce qui se situe entre les niveaux d'API 11 et 15, vous devez utiliser NotificationBuilder.getNotification () . Alors utilisez

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

L'astuce sur le niveau d'API devant être 16 est correcte. Cela a fonctionné pour moi

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

J'avais le problème où la notification fonctionnait bien sur les appareils plus récents mais pas sur Android 4.0.4 (API niveau 15). J'obtiens un formulaire d'avertissement de dépréciation Eclipse. @SuppressWarnings ("dépréciation" ) ne le cache pas entièrement, mais je pense que cela est probablement utile.

17
formica

Android Lint est un nouvel outil introduit dans ADT 16 (et Tools 16) qui scanne Android sources du projet pour les bugs potentiels. Il est disponible à la fois comme outil de ligne de commande, et intégré à Eclipse

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

Pour la liste des vérifications de peluches

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

Pour supprimer l'avertissement de peluches

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

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

Si votre application prend en charge les versions de Android aussi anciennes que l'API niveau 4, vous pouvez utiliser à la place NotificationCompat.Builder, disponible dans le Android Bibliothèque de support.

Pour la bibliothèque de support

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

5
Raghunandan

Vous pouvez utiliser à partir de ceci:

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);
            }
1
user4813855

J'ai le même problème dans le studio Android. J'ai apporté des modifications mineures au fichier build.gradle (module: app) et Le problème a été résolu. enter image description here

Après le projet de synchronisation.

0
msc