Matikan getaran untuk notifikasi 'Masuk ke jaringan WiFi'

17

Sejak pembaruan Android 6.0 pada Nexus 5, setiap kali saya mendapat pemberitahuan 'Masuk ke jaringan WiFi' telepon bergetar. Adakah ide di mana saya dapat mematikan ini sambil menjaga getaran untuk panggilan, SMS, pesan WhatsApp, dll?

Ritz
sumber
4
Saya menderita masalah yang sama persis. Saya mencari secara luas dan tampaknya menjadi masalah baru dengan v6.0. Sangat, sangat menyebalkan.
dbasch
1
Tidak ada perbaikan yang disarankan di bawah ini yang berfungsi untuk saya. Saya menggunakan mode Prioritas untuk penggunaan yang dimaksudkan (mis. Ketika saya sibuk atau tidur); Saya tidak ingin ponsel saya dalam mode prioritas sepanjang waktu. Dan tidak ada perbaikan lain yang benar-benar berfungsi (dan jawaban Andrew T tampaknya mengindikasikan alasannya). Apakah ada perbaikan untuk rom yang di-root stock? Melibatkan modul Xposed? Apakah akan diperbaiki di versi Android yang lebih baru?
znt

Jawaban:

6

Ada solusi yang melibatkan mode Prioritas jangan ganggu saja .

Sederhananya, Anda harus menggunakan Prioritas saja (dari Pengaturan Cepat - Jangan ganggu ) karena memiliki pengaturan per-aplikasi untuk peringatan notifikasi yang dapat menimpa pengaturan default sistem. Mode Prioritas saja masih akan menampilkan semua pemberitahuan. Namun, hanya pemberitahuan prioritas yang akan diperingatkan (suara, getaran, dan lampu LED).

Idenya adalah untuk memperlakukan semua pemberitahuan sebagai prioritas (dari Pengaturan - Suara & pemberitahuan - Pemberitahuan aplikasi - [nama aplikasi] - Perlakukan sebagai prioritas) kecuali untuk pemberitahuan portal captive, yang berada di bawah aplikasi Sistem Android (secara default, aplikasi sistem tidak terdaftar Anda perlu mencentang Tampilkan sistem dari menu melimpah. Biarkan aplikasi ini sebagai bukan prioritas, tetapi jangan lupa untuk sisa aplikasi sistem).

Namun, ada beberapa kelemahan yang mungkin Anda pertimbangkan terlebih dahulu sebelum menggunakan solusi ini:

  1. Anda mengorbankan penggunaan yang dimaksudkan dari mode Prioritas saja, hanya membiarkan Keheningan total sebagai satu-satunya pilihan (namun, jika Anda tidak pernah berniat untuk menggunakan fitur ini, maka Anda beruntung karena Anda dapat menggunakannya).
  2. Jika Anda memiliki banyak aplikasi yang diinstal, cukup membosankan untuk mengatur semua aplikasi untuk memperlakukan pemberitahuan mereka sebagai prioritas (mungkin sebuah skrip dapat membantu ...). Selain itu, setiap kali Anda memasang aplikasi baru, Anda tidak boleh lupa untuk menganggap pemberitahuannya sebagai prioritas (kecuali jika Anda tidak peduli dengan peringatannya).
  3. Anda tidak akan mendapatkan lansiran untuk semua pemberitahuan dari Sistem Android (Anda perlu bereksperimen dengan ini, karena saya tidak tahu pemberitahuan apa yang dipertimbangkan oleh Sistem Android).
Andrew T.
sumber
5

TL; DR

Jika Anda masih ingin memiliki getaran pada semua notifikasi kecuali untuk captive portal (masalah khusus ini) , saya khawatir Anda tidak bisa .

Seolah dbasch disebutkan dalam komentar , bahwa getaran (sebenarnya, pemberitahuan peringatan itu sendiri) ditambahkan di Marshmallow.


Detail Teknis

Ketika Android mendeteksi bahwa WiFi harus masuk ke captive portal, seperti yang sudah Anda perhatikan, itu akan membuat pemberitahuan. Ini dilakukan oleh setProvNotificationVisibleIntent()fungsi dalam ConnectivityService.

Tampilkan atau sembunyikan pemberitahuan penyediaan jaringan.

Kami menggunakan pemberitahuan untuk dua tujuan: untuk memberi tahu bahwa jaringan mengharuskan masuk ( NotificationType.SIGN_IN), atau untuk memberi tahu bahwa jaringan tidak memiliki akses Internet ( NotificationType.NO_INTERNET). Kami menampilkan paling banyak satu pemberitahuan per ID, jadi pada jaringan tertentu kami dapat menampilkan jenis pemberitahuan yang paling baru diminta. Jadi misalnya jika captive portal gagal membalas dalam beberapa detik setelah terhubung, kita mungkin pertama kali menampilkan NO_INTERNET, dan kemudian ketika cek captive portal selesai, display SIGN_IN.

Kode yang relevan dengan peringatan notifikasi yang digunakan di Android 6.0 Marshmallow :

Notification notification = new Notification.Builder(mContext)
    ...
    .setDefaults(Notification.DEFAULT_ALL)
    ...

Perhatikan bahwa Notification.DEFAULT_ALLakan " menggunakan semua nilai default (jika ada) ", yang artinya tergantung pada pengaturan notifikasi sistem Anda (suara, getaran, dan lampu LED).

Dibandingkan dengan yang ada di Android 5.x Lollipop , kodenya adalah:

Notification notification = new Notification();
...

Tidak lebih, tidak kurang. Itu kode yang relevan. new Notification()akan " membangun Notificationobjek dengan nilai default ". Meskipun tampaknya tidak ada perubahan artinya, perhatikan bahwa defaultstidak ditetapkan / diinisialisasi ke Notification.DEFAULT_ALL(nilai: -1). Sebagai gantinya, karena tidak ada inisialisasi, itu akan default ke 0, yang tidak ada peringatan .

Entah itu bug yang diabaikan oleh Google yang telah diperbaiki di Marshmallow atau tidak, saya tidak tahu. Juga, itulah alasan mengapa tidak ada peringatan di Android Lollipop, tetapi sekarang ada di Android Marshmallow.

Andrew T.
sumber
"Kamu tidak bisa". Saya yakin Anda dapat dengan modul Xposed (atau setidaknya beberapa bacaan awal membuat saya berpikir demikian), walaupun orang mungkin harus menulisnya sendiri ...
znt
1

Satu-satunya cara saya menemukan untuk menghilangkan getaran yang mengganggu adalah dengan menonaktifkan sepenuhnya notifikasi 'wifi yang tersedia'. Untuk melakukannya, masuk ke pengaturan-> wifi -> ketuk pada tiga titik vertikal -> buka 'pengaturan lanjutan' dan nonaktifkan pemberitahuan untuk jaringan wifi yang dapat diakses secara publik. Menunggu perbaikan, saya pikir itu adalah satu-satunya solusi dan tidak terlalu buruk untuk menonaktifkannya, saya selalu menganggap mereka cukup tidak berguna.


sumber
3
Terima kasih atas jawaban anda. Namun ini tampaknya tidak berhasil, masih menampilkan pemberitahuan dan bergetar bahkan setelah mematikan opsi 'Pemberitahuan jaringan'.
Ritz
1
Perbaikan ini tidak bekerja pada Nexus 5 saya juga.
dbasch
Saya sudah mencoba ini di Moto X Pure saya dan tidak berhasil di sana.
Nat Kuhn
Juga pada Moto E saya generasi kedua
Andy Clark
1

Pengaturan> Aplikasi> Layanan Konektivitas Google> Pemberitahuan> Blokir mematikannya sepenuhnya.

stopsatgreen
sumber
Terima kasih, (dengan asumsi ini berfungsi)! Sekarang saya hanya perlu cara untuk mengingat bahwa saya memblokir ini ketika mereka memperbaikinya ...
Nat Kuhn
Sedihnya, anggapan itu salah ... tidak berfungsi di Moto X Pure
Nat Kuhn
0

Pemberitahuan itu diinisiasi oleh Sistem Android ( android). Anda dapat menggunakan appops untuk menolak izin Sistem Android untuk bergetar perangkat dalam situasi apa pun. Asalkan Anda memiliki pengaturan di PC, lakukan:

adb shell appops set android VIBRATE deny

Coba sambungkan ke Wi-Fi tanpa akses internet. Anda masih akan mendapatkan notifikasi itu tetapi tanpa getaran. Jika Anda juga bermaksud menyembunyikan pemberitahuan itu, Anda dapat mengikuti sisa jawaban yang diposting di sini atau di situs web ini.

Untuk mengembalikan perubahan, lakukan:

adb shell appops set android VIBRATE allow

Getaran untuk panggilan dimulai oleh aplikasi Dialer, untuk SMS itu akan menjadi aplikasi SMS default Anda, untuk pesan WhatsApp, itu adalah aplikasi yang sama, sehingga mereka tidak akan terpengaruh. Mungkin ada konsekuensi tak terduga dari perintah yang tidak saya sadari, jadi beri tahu saya tentang mereka melalui komentar.

Catatan: solusi ini diuji pada CM13 build tidak resmi.

Firelord
sumber