Как отключить стандартную вибрацию уведомления

Я использую Galaxy Nexus с Android 4.0, я установил беззвучный режим на вибрацию в настройках. Я использую NotificationManager.notify для отправки уведомления. Я не устанавливаю Notification.vibrate, я даже использую myNotification.defaults &= ~Notification.DEFAULT_VIBRATE, чтобы отключить вибрацию. Но он все еще вибрирует после вызова NotifcationManager.notify. Может ли кто-нибудь сказать мне, как отключить вибрацию уведомления в режиме вибрации?


person George_BJ    schedule 14.03.2012    source источник


Ответы (5)


используйте следующий код:

notification.defaults = Notification.DEFAULT_LIGHTS;
//or 
notification.defaults = Notification.DEFAULT_SOUND;
person Hai Bo Wang    schedule 14.03.2012

Для динамического управления настройками уведомлений:

notification.defaults = Notification.DEFAULT_LIGHTS;

if(/*sound enabled*/)
    notification.defaults |= Notification.DEFAULT_SOUND;

if(/*vibration enabled*/)
    notification.defaults |= Notification.DEFAULT_VIBRATE;
person Hartok    schedule 20.08.2012

Чтобы отключить вибрацию при приходе уведомления, я использую этот код.

notification.vibrate = new long[] { -1 };

И работает отлично.

person Bunny    schedule 08.04.2016

Сначала сохраните значение кнопки настройки вибрации в общих настройках. а затем поместите этот код там, где ваше уведомление получено.

SharedPreferences preferences = context.getSharedPreferences("VIBRATE",
            0);
boolean vibrate = preferences.getBoolean("vibrate", true);
if (vibrate) {
        notification.defaults |= Notification.DEFAULT_VIBRATE;
    }
person Kishan Dhamat    schedule 25.09.2013

Это также можно сделать с помощью следующей команды adb для конкретного пакета.

adb shell
cmd appops set package_name VIBRATE ignore

Приведенная выше команда отключит все вибрации для пакета package_name.

person nandal    schedule 27.04.2020