Dall'aggiornamento di Android 6.0 su Nexus 5, ogni volta che ricevo la notifica "Accedi alla rete WiFi" il telefono vibra. Qualche idea su dove posso disattivarlo mantenendo la vibrazione per chiamate, SMS, messaggi WhatsApp, ecc.?
Dall'aggiornamento di Android 6.0 su Nexus 5, ogni volta che ricevo la notifica "Accedi alla rete WiFi" il telefono vibra. Qualche idea su dove posso disattivarlo mantenendo la vibrazione per chiamate, SMS, messaggi WhatsApp, ecc.?
Risposte:
Esiste una soluzione alternativa che coinvolge la modalità Solo priorità di Non disturbare .
Per dirla semplicemente, è necessario utilizzare solo Priorità (da Impostazioni rapide - Non disturbare ) poiché ha un'impostazione per-app per l'avviso di notifica che può sovrascrivere l'impostazione predefinita del sistema. La modalità Solo priorità mostrerà comunque tutte le notifiche. Tuttavia, verranno avvisate solo le notifiche prioritarie (suono, vibrazione e luce LED).
L'idea è di considerare tutte le notifiche come prioritarie (da Impostazioni - Suono e notifica - Notifiche app - [nome app] - Tratta come prioritaria) tranne per la notifica del portale captive, che si trova nell'app di sistema Android (per impostazione predefinita, le app di sistema non sono elencate È necessario selezionare Mostra sistema dal menu di overflow. Lasciare questa app come non prioritaria, ma non dimenticare le altre app di sistema).
Tuttavia, ci sono alcuni svantaggi che potresti considerare prima di utilizzare questa soluzione alternativa:
TL; DR
Se desideri comunque avere delle vibrazioni su tutte le notifiche ad eccezione del captive portal (questo particolare problema) , temo di non poterlo fare .
È come dbasch menzionato nel commento , che la vibrazione (in realtà, l' avviso di notifica stesso) è stata aggiunta in Marshmallow.
Quando Android rileva che il WiFi deve accedere al portale captive, come hai già notato, creerà una notifica. È fatto dalla setProvNotificationVisibleIntent()
funzione in ConnectivityService
.
Mostra o nascondi le notifiche di provisioning di rete.
Utilizziamo le notifiche per due scopi: notificare che una rete richiede l'accesso (
NotificationType.SIGN_IN
) o notificare che una rete non ha accesso a Internet (NotificationType.NO_INTERNET
). Visualizziamo al massimo una notifica per ID, quindi su una particolare rete possiamo visualizzare il tipo di notifica che è stato richiesto più di recente. Quindi, ad esempio, se un portale captive non risponde entro pochi secondi dalla connessione, potremmo prima visualizzareNO_INTERNET
, quindi quando il controllo del portale captive è completo, visualizzareSIGN_IN
.
Il codice rilevante per l'avviso di notifica utilizzato in Android 6.0 Marshmallow :
Notification notification = new Notification.Builder(mContext)
...
.setDefaults(Notification.DEFAULT_ALL)
...
Si noti che Notification.DEFAULT_ALL
" utilizzerà tutti i valori predefiniti (ove applicabile) ", il che significa che dipende dalle impostazioni di notifica del sistema (suono, vibrazione e luce LED).
Rispetto a quello di Android 5.x Lollipop , il codice è:
Notification notification = new Notification();
...
Ne più ne meno. Questo è il codice rilevante. new Notification()
" costruirà un Notification
oggetto con valori predefiniti ". Anche se sembra che non ci siano cambiamenti nel significato, nota che defaults
non è impostato / inizializzato su Notification.DEFAULT_ALL
(valore: -1). Invece, poiché non è presente l'inizializzazione, verrà impostato automaticamente su 0, che non è un avviso .
Che si tratti di un bug trascurato da Google che è stato corretto in Marshmallow o no, non lo so. Inoltre, questo è il motivo per cui non c'è alcun avviso in Android Lollipop, ma ora c'è in Android Marshmallow.
L'unico modo in cui ho scoperto di liberarmi di quella fastidiosa vibrazione è disabilitare completamente la notifica "wifi disponibile". Per farlo vai su impostazione-> wifi -> tocca i tre punti verticali -> vai su 'impostazioni avanzate' e disabilita le notifiche per le reti wifi accessibili al pubblico. In attesa di una correzione, penso che sia l'unica soluzione e una perdita non così grave per disabilitarle, le ho sempre ritenute abbastanza inutili.
Impostazioni> App> Servizi di connettività di Google> Notifiche> Blocco le disattiva completamente.
Tale notifica viene avviata dal sistema Android ( android
). Puoi utilizzare le appops per negare al Sistema Android l'autorizzazione a vibrare il dispositivo in qualsiasi situazione. A condizione che tu abbia configurato adb nel PC, esegui:
adb shell appops set android VIBRATE deny
Prova a connetterti a una rete Wi-Fi senza accesso a Internet. Riceveresti comunque quella notifica ma senza vibrazioni. Se si intende anche nascondere tale notifica, è possibile seguire il resto delle risposte pubblicate qui o su questo sito Web.
Per ripristinare le modifiche, eseguire:
adb shell appops set android VIBRATE allow
La vibrazione per le chiamate viene avviata dall'app Dialer, per SMS sarebbe l'app SMS predefinita, per i messaggi WhatsApp, è la stessa app, quindi non saranno interessati. Potrebbero esserci conseguenze impreviste di quel comando di cui non sono a conoscenza, quindi fatemi sapere su di loro attraverso i commenti.
Nota: questa soluzione è stata testata su una build non ufficiale di CM13.