2

Avec l'API 26 (Android 8.0), nous devons définir un NotificationChannel pour chaque notification. Chaque canal a ses propres réglages de perturbations (par exemple vibration, lumière, son).La notification Android vibre avec NotifiationChannel.enableVibration (false)

Problème: Lorsque je désactive les vibrations pour ce canal et de déployer ce sur une 8.0 Android (mise à jour de sécurité Septembre 2017) téléphone (Nexus 5X), la notification déclenche les vibrations de toute façon et ouvre automatiquement (pop-in) que je n'ai pas défini et que je veux désactiver.

  1. j'enregistrer un NotificationChannel dans mon MainActivity:

    // Register NotificationChannels needed for API 26+ to display notification messages 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 
        NotificationChannel runningChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID_RUNNING, 
          getString(R.string.notification_channel_name_running), NotificationManager.IMPORTANCE_LOW); 
        runningChannel.enableLights(false); 
        runningChannel.enableVibration(false); 
        mNotificationManager.createNotificationChannel(runningChannel); 
    } 
    
  2. Je mis la NotificationChannel pour la notification:

    notification = new NotificationCompat.Builder(context) 
          .setContentIntent(onClickPendingIntent) 
          .setChannelId(NOTIFICATION_CHANNEL_ID_RUNNING) 
          .setOngoing(true) 
          .setWhen(System.currentTimeMillis()) 
          .setAutoCancel(false) 
          .build(); 
    

Mise à jour (mise à jour de sécurité 5ème Octobre 2017)

Maintenant tout fonctionne comme prévu sans solution de contournement, donc je peux choisir targetSDK 26 (avant, j'ai utilisé 25 pour éviter ce faux comportement). Pour le cas où d'autres versions ont un bug similaire d'autres téléphones n'a pas encore reçu la dernière mise à jour, j'ai marqué la solution de contournement ci-dessous comme réponse acceptée.

+0

essayez de modifier le niveau d'importance NotificationManager.IMPORTANCE_HIGH –

+0

Merci pour votre @ArnavM suggestion. Cependant, cela ne change pas le comportement (vibre encore et affiche la notification). Pouvez-vous expliquer pourquoi vous pensez que cela aurait dû faire une différence? – hb0

Répondre

1

Cela semble fonctionner:

runningchannel.setVibrationPattern(new long[]{0, 0, 0, 0,0, 0, 0, 0, 0}); 

Oui, il est bizarre

+0

Merci @Piotr, je vais vérifier dès qu'il y a le temps et marquer votre réponse comme correcte quand cela fonctionne. À votre santé! – hb0

+0

Mon Nexus 5X a reçu une mise à jour du système "5 octobre 2017". Après cette mise à jour, je n'obtiens pas le faux comportement mentionné dans la question. Ainsi, je n'ai pas besoin d'utiliser votre solution de contournement, mais il semble légitime, donc je le marque comme la bonne aswer d'autres pourraient ne pas encore recevoir la dernière mise à jour Android 8 ou obtenir ce comportement faux dans les prochaines versions. Merci mon pote! – hb0

+0

Ne travaillait pas pour moi –