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?
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?
Jawaban:
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:
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.
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 menampilkanNO_INTERNET
, dan kemudian ketika cek captive portal selesai, displaySIGN_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_ALL
akan " 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 Notification
objek dengan nilai default ". Meskipun tampaknya tidak ada perubahan artinya, perhatikan bahwa defaults
tidak 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.
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.
Pengaturan> Aplikasi> Layanan Konektivitas Google> Pemberitahuan> Blokir mematikannya sepenuhnya.
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 adb 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.