web-dev-qa-db-fra.com

Android Notification.PRIORITY_MAX est obsolète. Quelle est l'alternative pour afficher la notification en haut?

Comment afficher les notifications sur Android? setPriority(Notification.PRIORITY_MAX)

comme Notification.PRIORITY_MAX est obsolète, quelle est l'alternative?

NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                .setContentIntent(pendingIntent)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle("Notification Title")
                .setContentText("Notification Text")
                .setPriority(Notification.PRIORITY_MAX)
                .setAutoCancel(true);
6
Ankush Kapoor

Dans Android O, les canaux Notification ont été introduits. En particulier, vous définissez Channel avec constructor . Dans la documentation, vous pouvez voir la notion d’importance et c’est ce qui remplace la priorité.

3
Jakub Szczygieł

PRIORITY_MAX Cette constante est déconseillée dans l'API de niveau 26. Utilisez IMPORTANCE_HIGH à la place.

PRIORITY_MAX

int PRIORITY_MAX

Cette constante est obsolète dans les API de niveau 26 . Utilisez à la place IMPORTANCE_HIGH.

Priorité maximale, pour les éléments les plus importants de votre application qui nécessitent l'attention ou la saisie de l'utilisateur.

Valeur constante: 2 (0x00000002)

// create ios channel
        NotificationChannel iosChannel = new NotificationChannel(IOS_CHANNEL_ID,
                IOS_CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
        iosChannel.enableLights(true);
        iosChannel.enableVibration(true);
        iosChannel.setLightColor(Color.GRAY);
        iosChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
        getManager().createNotificationChannel(iosChannel);

https://developer.Android.com/reference/Android/app/Notification.html#PRIORITY_MIN

7
Akash kumar

À partir d'Android O (API 26), la priorité au niveau de la notification est obsolète. Elle a été remplacée par une importance au niveau du canal et les notifications doivent maintenant être placées dans un canal spécifique.

Si vous utilisez Android O ou une version ultérieure, vous devez créer un canal et définir son importance.

NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
            CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);

Si vous devez maintenir la compatibilité avec les versions antérieures de la version Android, vous devez continuer à définir la priorité au niveau de la notification.

NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
            ...
            .setPriority(Notification.PRIORITY_MAX)
            ...

Malheureusement, il génère l'avertissement concernant la dépréciation de PRIORITY_MAX.

Cela peut être évité en utilisant la version NotificationCompat de la constante PRIORITY_MAX.

NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
        ...
        .setPriority(NotificationCompat.PRIORITY_MAX)
        ...
2
cristallo

Seulement trois étapes à suivre pour la notification Android O

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "CHANNEL_ID")

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                CharSequence name = "Hello";// The user-visible name of the channel.
                int importance = NotificationManager.IMPORTANCE_HIGH;
                NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
                mNotificationManager.createNotificationChannel(mChannel);
            }

mNotificationManager.notify(notificationId, notificationBuilder.build());
1
Pradeep Kumar S

Code de travail pour toutes les versions Android pour définir la priorité maximale.

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    String NOTIFICATION_CHANNEL_ID = "my_channel_id_01";

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "My Notifications", NotificationManager.IMPORTANCE_HIGH);

    // Configure the notification channel.
    notificationChannel.setDescription("Channel description");
    notificationChannel.enableLights(true);
    notificationChannel.setLightColor(Color.RED);
    notificationChannel.setVibrationPattern(new long[]{0, 1000, 500, 1000});
    notificationChannel.enableVibration(true);
    notificationManager.createNotificationChannel(notificationChannel);
}


NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);

notificationBuilder.setAutoCancel(true)
        .setDefaults(Notification.DEFAULT_ALL)
        .setWhen(System.currentTimeMillis())
        .setSmallIcon(R.drawable.ic_launcher)
        .setTicker("Hearty365")
        .setPriority(Notification.IMPORTANCE_HIGH)
        .setContentTitle("Default notification")
        .setContentText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
        .setContentInfo("Info");

notificationManager.notify(/*notification id*/1, notificationBuilder.build());
0
Aks4125