Od czasu aktualizacji Androida 6.0 na Nexusie 5 za każdym razem, gdy otrzymuję powiadomienie „Zaloguj się do sieci Wi-Fi”, telefon wibruje. Masz pomysł, gdzie mogę to wyłączyć, utrzymując wibrację dla połączeń, SMS-ów, wiadomości WhatsApp itp.?
Od czasu aktualizacji Androida 6.0 na Nexusie 5 za każdym razem, gdy otrzymuję powiadomienie „Zaloguj się do sieci Wi-Fi”, telefon wibruje. Masz pomysł, gdzie mogę to wyłączyć, utrzymując wibrację dla połączeń, SMS-ów, wiadomości WhatsApp itp.?
Odpowiedzi:
Istnieje obejście obejmujące tryb Tylko nie przeszkadzać .
Krótko mówiąc, musisz użyć tylko priorytetu (z Szybkich ustawień - Nie przeszkadzaj ), ponieważ ma ustawienie dla aplikacji dla powiadomienia, które może zastąpić domyślne ustawienie systemu. W trybie tylko priorytetowym nadal będą wyświetlane wszystkie powiadomienia. Powiadomione zostaną jednak tylko powiadomienia priorytetowe (dźwięk, wibracje i światło LED).
Chodzi o to, aby traktować wszystkie powiadomienia jako priorytetowe (od Ustawienia - Dźwięk i powiadomienia - Powiadomienia aplikacji - [nazwa aplikacji] - Traktuj jako priorytetowe), z wyjątkiem powiadomień z portalu dostępowego, które znajdują się w aplikacji Android System (domyślnie aplikacje systemowe nie są wymienione Musisz zaznaczyć Pokaż system z menu przepełnienia. Pozostaw tę aplikację jako niepriorytetową, ale nie zapomnij o pozostałych aplikacjach systemowych).
Istnieją jednak pewne wady, które należy rozważyć przed użyciem tego obejścia:
TL; DR
Jeśli nadal chcesz wibrować we wszystkich powiadomieniach oprócz portalu dostępowego (ten konkretny problem) , obawiam się, że nie możesz .
To tak, jak dbasch wspomniany w komentarzu , że wibracje (właściwie powiadomienie alarmowe) sam ) została dodana w Marshmallow.
Gdy Android wykryje, że WiFi musi się zalogować do niewoli portalu, jak już zauważyłeś, utworzy powiadomienie. Odbywa się to przez setProvNotificationVisibleIntent()
funkcję w ConnectivityService
.
Pokaż lub ukryj powiadomienia o udostępnianiu sieci.
Powiadomień używamy do dwóch celów: do powiadomienia, że sieć wymaga zalogowania się (
NotificationType.SIGN_IN
) lub do powiadomienia, że sieć nie ma dostępu do Internetu (NotificationType.NO_INTERNET
). Wyświetlamy najwyżej jedno powiadomienie na identyfikator, więc w konkretnej sieci możemy wyświetlić typ powiadomienia, o który ostatnio proszono. Na przykład jeśli portal przechwytujący nie odpowie w ciągu kilku sekund od połączenia, możemy najpierw wyświetlićNO_INTERNET
, a następnie po zakończeniu sprawdzania portalu dostępowego wyświetlićSIGN_IN
.
Odpowiedni kod do powiadomienia, który jest używany w systemie Android 6.0 Marshmallow :
Notification notification = new Notification.Builder(mContext)
...
.setDefaults(Notification.DEFAULT_ALL)
...
Pamiętaj, że Notification.DEFAULT_ALL
„ użyje wszystkich wartości domyślnych (w stosownych przypadkach) ”, co oznacza, że zależy to od ustawień powiadomień w systemie (dźwięk, wibracje i światło LED).
W porównaniu do tego w Androidzie 5.x Lollipop , kod jest następujący:
Notification notification = new Notification();
...
Nie więcej nie mniej. To jest odpowiedni kod. new Notification()
„ zbuduje Notification
obiekt z wartościami domyślnymi ”. Chociaż wydaje się, że nie ma zmiany znaczenia, należy pamiętać, że defaults
nie jest on ustawiony / zainicjowany na Notification.DEFAULT_ALL
(wartość: -1). Zamiast tego, ponieważ nie ma inicjalizacji, zostanie domyślnie ustawiona na 0, co nie jest alarmem .
Czy to błąd przeoczony przez Google, który został naprawiony w Marshmallow, czy nie, nie wiem. Ponadto jest to powód, dla którego nie ma alertu w Android Lollipop, ale teraz jest w Android Marshmallow.
Jedynym sposobem, aby pozbyć się tej irytującej wibracji, jest całkowite wyłączenie powiadomienia „dostępne Wi-Fi”. Aby to zrobić, przejdź do ustawienia-> Wi-Fi -> dotknij trzech pionowych kropek -> przejdź do „ustawień zaawansowanych” i wyłącz powiadomienia dla publicznie dostępnych sieci Wi-Fi. Czekając na poprawkę, myślę, że jest to jedyne rozwiązanie, a nie tak duża strata, aby je wyłączyć, zawsze uważałem je za bezużyteczne.
Ustawienia> Aplikacje> Usługi łączności Google> Powiadomienia> Blokuj je całkowicie.
To powiadomienie jest inicjowane przez system Android ( android
). Możesz użyć aplikacji, aby odmówić systemowi Android pozwolenia na wibrowanie urządzenia w dowolnej sytuacji. Pod warunkiem, że masz konfigurację adb na PC, wykonaj następujące czynności:
adb shell appops set android VIBRATE deny
Spróbuj połączyć się z Wi-Fi bez dostępu do Internetu. Nadal otrzymasz to powiadomienie, ale bez wibracji. Jeśli zamierzasz również ukryć to powiadomienie, możesz postępować zgodnie z resztą odpowiedzi opublikowanych tutaj lub na tej stronie.
Aby cofnąć zmiany, wykonaj:
adb shell appops set android VIBRATE allow
Wibracje dla połączeń są inicjowane przez aplikację Dialer, w przypadku SMS-a byłaby to domyślna aplikacja do SMS-ów, w przypadku wiadomości WhatsApp jest to ta sama aplikacja, więc nie będzie to miało wpływu. Mogą wystąpić nieprzewidziane konsekwencje tego polecenia, których nie jestem świadomy, więc daj mi znać o nich w komentarzach.
Uwaga: to rozwiązanie jest testowane na nieoficjalnej wersji CM13.