З моменту оновлення Android 6.0 на Nexus 5 щоразу, коли я отримую сповіщення "Увійти до мережі Wi-Fi", телефон вібрує. Будь-яка ідея, де я можу відключити це, зберігаючи вібрацію для дзвінків, SMS, повідомлень WhatsApp тощо?
З моменту оновлення Android 6.0 на Nexus 5 щоразу, коли я отримую сповіщення "Увійти до мережі Wi-Fi", телефон вібрує. Будь-яка ідея, де я можу відключити це, зберігаючи вібрацію для дзвінків, SMS, повідомлень WhatsApp тощо?
Відповіді:
Існує рішення щодо залучення Не турбувати пріоритет" .
Простіше кажучи, ви повинні використовувати лише пріоритет (від швидких налаштувань - не турбувати ), оскільки в ньому є налаштування програми для оповіщення про сповіщення, яке може замінити налаштування системи за замовчуванням. У режимі лише з пріоритетом все ще відображатимуться всі сповіщення. Однак буде попереджено лише пріоритетне сповіщення (звук, вібрація та світлодіодне світло).
Ідея полягає в тому, щоб усі сповіщення розглядалися як пріоритетні (з Налаштувань - Звук та сповіщення - Повідомлення додатків - [Ім'я програми] - Розглядайте як пріоритет), за винятком сповіщень на порталі, що належить до додатка Android System (за замовчуванням системні додатки не вказані . Потрібно поставити галочку Показувати систему в меню переповнення. Залиште це додаток як не пріоритетне, але не забудьте про решту системних додатків).
Однак є деякі недоліки, які ви можете спочатку врахувати, перш ніж використовувати це рішення:
TL; DR
Якщо ви все ще хочете мати вібрацію у всіх сповіщеннях, окрім невідомого порталу (ця конкретна проблема) , боюся, ви не можете .
Як у dbasch, зазначеному в коментарі , вібрація (насправді, сповіщення про сповіщення) ) була додана в Marshmallow.
Коли Android виявить, що WiFi потрібно увійти на портал, що перебуває в полоні, як ви вже помітили, він створить сповіщення. Це робиться за setProvNotificationVisibleIntent()
функцією в ConnectivityService
.
Показати або приховати сповіщення про надання мережі.
Ми використовуємо сповіщення з двома цілями: сповіщати про те, що мережа вимагає увійти (
NotificationType.SIGN_IN
), або сповістити, що в мережі немає доступу до Інтернету (NotificationType.NO_INTERNET
). Ми відображаємо щонайменше одне сповіщення за ідентифікатором, тож у певній мережі ми можемо відображати тип сповіщення, який нещодавно запитували. Так, наприклад, якщо портал, який перебуває у полоні, не дає відповіді протягом декількох секунд після підключення, ми можемо спочатку відобразитиNO_INTERNET
, а потім, коли завершиться перевірка порталу, що перебуває на полоні, відобразитиSIGN_IN
.
Код відповідного сповіщення про сповіщення, який використовується в Android 6.0 Marshmallow :
Notification notification = new Notification.Builder(mContext)
...
.setDefaults(Notification.DEFAULT_ALL)
...
Зауважте, що Notification.DEFAULT_ALL
" використовуватимуться всі значення за замовчуванням (де це застосовно) ", це означає, що це залежить від налаштувань сповіщення вашої системи (звук, вібрація та світлодіодне світло).
Порівняно з типом в Android 5.x Lollipop , код такий:
Notification notification = new Notification();
...
Ні більше, ні менше. Це відповідний код. new Notification()
" сконструює Notification
об'єкт зі значеннями за замовчуванням ". Хоча здається, що зміна значення не має, зауважте, що defaults
не встановлено / ініціалізовано Notification.DEFAULT_ALL
значення (значення: -1). Натомість, оскільки немає ініціалізації, вона буде встановлена за замовчуванням до 0, що не є попередженням .
Чи це помилка, яку Google не помічає, яку виправили в Marshmallow чи ні, я не знаю. Крім того, це причина, чому немає сповіщень в Android Lollipop, але зараз є в Android Marshmallow.
Єдиний спосіб, коли я знайшов позбутися від цієї дратівливої вібрації, - це повністю відключити сповіщення про "доступний wifi". Для цього перейдіть до налаштування-> wifi -> натисніть на три вертикальні точки -> перейдіть до «розширених налаштувань» та вимкніть сповіщення для загальнодоступних мереж Wi-Fi. Очікуючи виправлення, я вважаю, що це єдине рішення і не така вже й втрата, щоб відключити їх, я завжди вважав їх досить марними.
Налаштування> Програми> Служби підключення Google> Сповіщення> Блок повністю вимикає їх.
Це повідомлення ініціюється системою Android ( android
). Ви можете використовувати appops, щоб відмовити Android System у дозволі вібрувати пристрій у будь-якій ситуації. За умови налаштування adb на ПК:
adb shell appops set android VIBRATE deny
Спробуйте підключитися до Wi-Fi без доступу до Інтернету. Ви все одно отримаєте це повідомлення, але без вібрації. Якщо ви також маєте намір приховати це повідомлення, ви можете дотримуватися решти відповідей, розміщених тут або на цьому веб-сайті.
Щоб відновити зміни, виконайте:
adb shell appops set android VIBRATE allow
Вібрація для дзвінків ініціюється програмою Dialer, для SMS це буде вашою програмою SMS за замовчуванням, для повідомлень WhatsApp - це те саме додаток, тому на них не впливатиме. Можуть бути непередбачені наслідки цієї команди, про яку я не знаю, тому повідомте про них через коментарі.
Примітка. Це рішення перевірено на неофіційній збірці CM13.