Wyłącz wibracje dla powiadomienia „Zaloguj się do sieci Wi-Fi”

17

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.?

Ritz
źródło
4
Mam dokładnie ten sam problem. Szukałem intensywnie i wydaje się, że jest to nowy problem z wersją 6.0. Bardzo, bardzo denerwujące.
dbasch
1
Żadna z sugerowanych poprawek poniżej nie działa dla mnie. Korzystam z trybu priorytetu zgodnie z jego przeznaczeniem (np. Gdy jestem zajęty lub śpię); Nie chcę przez cały czas telefonu w trybie priorytetu. I żadna z pozostałych poprawek wydaje się faktycznie nie działać (i odpowiedź Andrew T wydaje się wskazywać, dlaczego). Czy istnieje poprawka na zrootowany ROM? Zaangażowanie modułu Xposed? Czy zostanie to naprawione w późniejszych wersjach Androida?
znt

Odpowiedzi:

6

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:

  1. Poświęcasz planowane użycie trybu Tylko priorytet, pozostawiasz tylko Całkowitą ciszę jako jedyną opcję (jednak jeśli nigdy nie zamierzasz korzystać z tej funkcji, masz szczęście, ponieważ możesz z niej skorzystać).
  2. Jeśli masz zainstalowanych wiele aplikacji, ustawianie wszystkich aplikacji tak, aby traktowały swoje powiadomienia jako priorytetowe (żartem może być skrypt ...). Ponadto za każdym razem, gdy instalujesz nową aplikację, nie możesz zapomnieć o traktowaniu jej powiadomienia jako priorytetu (chyba że nie obchodzi Cię jej alert).
  3. Nie otrzymasz żadnych alertów dla wszystkich powiadomień z systemu Android (musisz z tym eksperymentować, ponieważ nie wiem, jakie powiadomienia są rozważane przez system Android).
Andrew T.
źródło
5

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.


Szczegóły techniczne

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_ALLuż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 Notificationobiekt z wartościami domyślnymi ”. Chociaż wydaje się, że nie ma zmiany znaczenia, należy pamiętać, że defaultsnie 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.

Andrew T.
źródło
„Nie możesz”. Założę się, że możesz to zrobić za pomocą modułu Xposed (lub przynajmniej wstępne czytanie każe mi to przemyśleć), chociaż może być konieczne napisanie go
osobiście
1

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.


źródło
3
Dziękuję za odpowiedź. Nie wydaje się to jednak działać, nadal wyświetla powiadomienie i wibruje nawet po wyłączeniu opcji „Powiadomienie sieciowe”.
Ritz
1
Ta poprawka również nie działa na moim Nexusie 5.
dbasch
Próbowałem tego na Moto X Pure i tam też nie działa.
Nat Kuhn
Ani w mojej drugiej generacji Moto E
Andy Clark,
1

Ustawienia> Aplikacje> Usługi łączności Google> Powiadomienia> Blokuj je całkowicie.

zatrzymuje się na zielono
źródło
Dzięki (zakładając, że to działa)! Teraz potrzebuję tylko sposobu, aby pamiętać, że zablokowałem to, kiedy to naprawili ...
Nat Kuhn
Niestety, to założenie było błędne ... nie działało na moim Moto X Pure
Nat Kuhn
0

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ę 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.

Firelord
źródło