Notification.Builder (context) a été récemment déconseillé avec l'emplacement de Notification Channels dans Android O.
PROBLÈME:
Après avoir utilisé Notification.Builder(context, StringID)
au lieu de Notification.Builder(context)
, j'ai reçu une notification à mon Android O appareil.
Cependant, après avoir essayé cela sur un Android 23 (M), je n'ai pas reçu de notification. J'ai débogué mon code et il a simplement cessé de s'exécuter une fois que le débogueur a atteint la ligne. Notification.Builder (contexte, StringID) sur Android 23 (M).
CORRECTIF:
Pour résoudre ce problème, j’ai utilisé la condition if/else pour séparer les appareils Android O et le reste des autres appareils.
J'ai l'extrait de code suivant:
Notification.Builder notificationBuilder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
notificationBuilder = new Notification.Builder(mContext,
mContext.getResources().getString(R.string.notification_id_channel));
} else {
notificationBuilder = new Notification.Builder(mContext);
}
Lint in Android Studio affiche la ligne de désapprobation suivante:
QUESTION:
Y a-t-il un moyen de se débarrasser de cette ligne d'avertissement de dépréciation?
Votre solution consiste à utiliser NotificationCompat.Builder(Context context, String channelId)
. Si vous utilisez ceci, vous n'avez pas à vérifier le niveau de l'API, le générateur ignore l'ID de canal sur les périphériques pré-Oreo.
Je l'ai testé sur les API 15, 22, 23 et 26 et il fonctionne parfaitement.
Vous devez définir un identifiant de canal unique (par exemple, "MyChannelId_01") et appeler NotificationCompat.Builder (ctx, "MyChannelId_01"). La notification construite sera publiée sur ce NotificationChannel "MyChannelId_01".
Cela vous permet de définir l’importance de la notification (elle contrôle le mode de notification des interruptions sur ce canal. La valeur est IMPORTANCE_UNSPECIFIED, IMPORTANCE_NONE, IMPORTANCE_MIN, IMPORTANCE_LOW, IMPORTANCE_DEFAULT ou IMPORTANCE_HIGH).
Vous pouvez trouver un exemple ici: Création d'un canal de notification
J'avais le même problème et depuis que je cible Android 22 et 24, je viens de faire ceci: NotificationCompat.Builder notification = new NotificationCompat.Builder (MainActivity.this, "")
Je suis sûr que quelqu'un dira que c'est un bidouillage, mais il élimine l'avertissement et je n'ai aucun problème.
Semble passer une chaîne vide fonctionne pour <Android 26.
Peut-être que quelqu'un d'autre peut dire si cela cause des problèmes pour 26.
Merci