Après avoir mis à jour mon projet vers Android O
buildToolsVersion "26.0.1"
Lint dans Android Studio affiche un avertissement obsolète pour la méthode de création de notification suivante:
new NotificationCompat.Builder(context)
Le problème est: Les développeurs Android mettent à jour leur documentation en décrivant NotificationChannel pour prendre en charge les notifications dans Android O, et nous fournissent un extrait de code, pourtant avec le même avertissement obsolète:
Notification notification = new Notification.Builder(MainActivity.this)
.setContentTitle("Nouveau message")
.setContentText("Vous avez reçu de nouveaux messages.")
.setSmallIcon(R.drawable.ic_notify_status)
.setChannelId(CHANNEL_ID)
.build();
Ma question: Y a-t-il une autre solution pour créer des notifications et prendre en charge Android O?
Une solution que j'ai trouvée est de passer l'ID du canal en paramètre dans le constructeur de Notification.Builder. Mais cette solution n'est pas exactement réutilisable.
new Notification.Builder(MainActivity.this, "channel_id")
5 votes
Mais cette solution n'est pas exactement réutilisable. Comment cela ?
5 votes
NotificationCompat.Builder est obsolète, pas Notification.Builder. Remarquez que la partie Compat a disparu. Notification est leur nouvelle classe où ils rationalisent tout
2 votes
@kapsym c'est en fait le contraire. Notification.Builder est plus ancien
0 votes
De plus, je ne le vois pas obsolète ici developer.android.com/reference/android/support/v4/app/…. Peut-être un bug dans Lint
0 votes
L'identifiant de canal est passé au constructeur, ou peut être placé en utilisant
notificationBuild.setChannelId("channel_id")
. Dans mon cas, cette dernière solution est plus réutilisable car monNotificationCompat.Builder
est réutilisé dans quelques méthodes, économisant des paramètres pour les icônes, les sons et les vibrations.0 votes
@kapsym c'est ma préoccupation. Il n'y a pas d'avertissement concernant cette solution dans la documentation des développeurs Android
0 votes
La seule chose qu'ils disent est que si vous voulez utiliser des notifications dans O et au-dessus, vous devrez utiliser les canaux, sinon vous pouvez utiliser l'ancienne méthode. Donc peut-être que nous devrons simplement placer une vérification de version dans le code avant de construire la bonne solution de notification
0 votes
Poste connexe - NotificationCompat.Builder n'accepte pas le 2ème argument