Désactiver les vibrations pour une notification
Je suis en train d'écrire une application à l'aide de la notification. Google guide du développeur encourage les développeurs à fournir des paramètres pour personnaliser les notifications (désactiver les vibrations, définir la notification de son...), aussi je vais essayer de désactiver la vibration pour les notifications si l'utilisateur a défini de cette façon.
Je suis en utilisant NotificationCompat.Builder
pour créer la notification, comme ceci:
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(Application.getContext())
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(Notification.PRIORITY_MAX)
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(largeIconBitmap)
.setAutoCancel(true)
.setContentIntent(resultPendingIntent)
.setContentTitle(title)
.setContentText(content);
J'ai essayé différentes façons de désactiver les notifications:
notificationBuilder.setVibrate(null);
notificationBuilder.setVibrate(new long[]{0l, 0l});
notificationBuilder.setDefaults(Notification.DEFAULT_ALL | ~Notification.DEFAULT_VIBRATE);
notificationBuilder.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND);`
J'ai aussi essayé de construire la notification et modification de valeurs dans l'objet:
Notification notification = notificationBuilder.build();
notification.vibrate = null;
Mais le téléphone vibre encore lorsque la notification s'affiche.
Comment puis-je désactiver la vibration pour les notifications?
Vous devez vous connecter pour publier un commentaire.
Après un long procès, & erreur de session, je pense que j'ai enfin compris quel est le problème.
Le problème réside dans la présente instruction
notificationBuilder.setDefaults(Notification.DEFAULT_ALL)
.N'importe quel paramètre que vous passez à
notificationBuilder.setVibrate()
après la miseDEFAULT_ALL
ouDEFAULT_VIBRATE
seront ignorés. Quelqu'un de chez Google doit avoir décidé de donner une priorité plus élevée àsetDefaults
que desetVibrate
.C'est comment j'ai fini par désactiver la vibration pour les notifications de mon application:
Cela fonctionne, mais ne se sent pas le droit d'initialiser une nouvelle
long[]
juste de désactiver la vibration.setVibrate(null)
et il n'a eu aucun effet, mais quand j'ai changé mon id de canal, il a travailléIls ne sont pas arrêter parce que vous utilisez
"setDefaults(Notification.DEFAULT_ALL)"
donc, si vous avez besoin d'arrêter les vibrations et le son de supprimer cette ligne , ou si vous avez besoin d'utiliser le son par défaut et arrêter les vibrations je pense que vous devez utilisersetDefaults(Notification.DEFAULT_SOUND)
etc ....setVibrate(null)
fonctionne pour moi et une meilleure solution que la création d'un inutile long[].Résultat: l'appareil n'est pas vibrer et pas de grogne dans le LogCat soit. 🙂
notification.toString()
? (Et vous êtes reviendrais sans aucun doute de ne pas appliquer les valeurs par défaut de n'importe où?)ce code fonctionne pour moi.
Ce code est à partir de la Notification Compat la Classe de l'Api. Cela devrait fonctionner, ajoutez à votre constructeur.