ปิดการสั่นเตือนสำหรับการแจ้งเตือน 'ลงชื่อเข้าใช้เครือข่าย WiFi'


17

ตั้งแต่การอัปเดต Android 6.0 บน Nexus 5 ทุกครั้งที่ฉันได้รับการแจ้งเตือน 'ลงชื่อเข้าใช้เครือข่าย WiFi' โทรศัพท์จะสั่น มีความคิดใดบ้างที่ฉันจะปิดการทำงานนี้ในขณะที่ยังคงสั่นสะเทือนสำหรับการโทร SMS ข้อความ WhatsApp และอื่น ๆ


4
ฉันกำลังทุกข์ทรมานกับปัญหาเดียวกันแน่นอน ฉันค้นหาอย่างกว้างขวางและดูเหมือนจะเป็นปัญหาใหม่กับ v6.0 น่ารำคาญมาก
dbasch

1
การแก้ไขที่แนะนำด้านล่างไม่เหมาะสำหรับฉัน ฉันใช้โหมด Priority สำหรับการใช้งานตามที่ตั้งใจไว้ (เช่นเมื่อฉันไม่ว่างหรือนอนหลับ); ฉันไม่ต้องการให้โทรศัพท์อยู่ในโหมดลำดับความสำคัญตลอดเวลา และไม่มีการแก้ไขอื่นใดที่ดูเหมือนจะใช้งานได้จริง (และคำตอบของ Andrew T ดูเหมือนจะระบุสาเหตุ) มีการแก้ไขสำหรับรอมรูทของหุ้นหรือไม่? เกี่ยวข้องกับโมดูล Xposed หรือไม่ จะได้รับการแก้ไขใน Android รุ่นที่ใหม่กว่าหรือไม่
znt

คำตอบ:


6

มีวิธีแก้ไขเฉพาะหน้าที่ไม่รบกวนโหมดลำดับความสำคัญเท่านั้น

ในการกล่าวง่ายๆคุณต้องใช้ลำดับความสำคัญเท่านั้น (จากการตั้งค่าด่วน - อย่ารบกวน ) เนื่องจากมีการตั้งค่าสำหรับแต่ละแอปสำหรับการแจ้งเตือนที่สามารถเขียนทับการตั้งค่าเริ่มต้นของระบบ โหมดลำดับความสำคัญเท่านั้นจะยังคงแสดงการแจ้งเตือนทั้งหมด อย่างไรก็ตามการแจ้งเตือนที่มีลำดับความสำคัญเท่านั้นที่จะได้รับการแจ้งเตือน (เสียงการสั่นสะเทือนและไฟ LED)

ความคิดคือการรักษาการแจ้งเตือนทั้งหมดเป็นสำคัญ (จากการตั้งค่า - เสียงและการแจ้งเตือน - การแจ้งเตือน App - [ชื่อแอป] - Treat เป็นสำคัญ)ยกเว้นสำหรับการแจ้งเตือนพอร์ทัลซึ่งอยู่ภายใต้ระบบ Androidแอป (โดยค่าเริ่มต้นปพลิเคชันระบบไม่ได้ระบุไว้ คุณต้องทำเครื่องหมายแสดงระบบจากเมนูล้นออกจากแอปนี้เป็นลำดับความสำคัญ แต่อย่าลืมแอพที่เหลือของระบบ)

อย่างไรก็ตามมีข้อเสียบางประการที่คุณควรพิจารณาก่อนใช้วิธีแก้ปัญหานี้:

  1. คุณเสียสละการใช้งานอย่างตั้งใจของโหมด Priority Only เพียงปล่อยให้ Total silence เป็นตัวเลือกเดียวเท่านั้น (อย่างไรก็ตามหากคุณไม่เคยตั้งใจจะใช้คุณสมบัตินี้คุณก็โชคดีเนื่องจากคุณสามารถใช้มันได้)
  2. หากคุณติดตั้งแอพจำนวนมากมันค่อนข้างน่าเบื่อที่จะตั้งแอพทั้งหมดให้ถือว่าการแจ้งเตือนของพวกเขาเป็นเรื่องสำคัญ (บางทีสคริปต์อาจช่วยได้ ... ) นอกจากนี้ทุกครั้งที่คุณติดตั้งแอพใหม่คุณจะต้องไม่ลืมที่จะปฏิบัติต่อการแจ้งเตือนของมันเป็นลำดับความสำคัญ (เว้นแต่คุณจะไม่สนใจเกี่ยวกับการแจ้งเตือน)
  3. คุณจะไม่ได้รับการแจ้งเตือนใด ๆ สำหรับการแจ้งเตือนทั้งหมดจากระบบ Android (คุณต้องทดลองกับสิ่งนี้เนื่องจากฉันไม่ทราบว่าระบบ Android จะพิจารณาการแจ้งเตือนใด)

5

TL; DR

หากคุณยังคงต้องการที่จะมีการสั่นสะเทือนในการแจ้งเตือนทั้งหมดยกเว้นสำหรับพอร์ทัล (ปัญหานี้โดยเฉพาะ)ฉันกลัวคุณไม่สามารถ

มันเป็นdbasch ที่กล่าวถึงในความคิดเห็นที่เพิ่มการสั่นสะเทือน (จริง ๆ แล้วการแจ้งเตือนการแจ้งเตือนตัวเอง) ใน Marshmallow


รายละเอียดทางเทคนิค

เมื่อ Android ตรวจพบว่า WiFi จำเป็นต้องลงชื่อเข้าใช้พอร์ทัลที่ถูกจับกุมตามที่คุณสังเกตเห็นแล้วมันจะสร้างการแจ้งเตือน มันทำโดยsetProvNotificationVisibleIntent()ฟังก์ชั่นConnectivityServiceค่ะ

แสดงหรือซ่อนการแจ้งเตือนการจัดสรรเครือข่าย

เราใช้การแจ้งเตือนเพื่อวัตถุประสงค์สองประการ: เพื่อแจ้งให้ทราบว่าเครือข่ายต้องมีการลงชื่อเข้าใช้ ( NotificationType.SIGN_IN) หรือเพื่อแจ้งว่าเครือข่ายไม่มีการเข้าถึงอินเทอร์เน็ต ( NotificationType.NO_INTERNET) เราแสดงการแจ้งเตือนไม่เกินหนึ่งรายการต่อ ID ดังนั้นในเครือข่ายหนึ่ง ๆ เราสามารถแสดงประเภทการแจ้งเตือนที่ได้รับการร้องขอล่าสุด ดังนั้นสำหรับตัวอย่างเช่นถ้าพอร์ทัลที่ล้มเหลวในการตอบกลับภายในไม่กี่วินาทีในการเชื่อมต่อครั้งแรกที่เราอาจแสดงและจากนั้นเมื่อเชลยเสร็จสิ้นการตรวจสอบพอร์ทัลการแสดงผลNO_INTERNET SIGN_IN

รหัสที่เกี่ยวข้องกับการแจ้งเตือนที่ใช้ในAndroid 6.0 Marshmallow :

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

โปรดทราบว่าNotification.DEFAULT_ALLจะ " ใช้ค่าเริ่มต้นทั้งหมด (ถ้ามี) " ซึ่งหมายความว่าขึ้นอยู่กับการตั้งค่าการแจ้งเตือนของระบบ (เสียงการสั่นสะเทือนและไฟ LED)

เมื่อเปรียบเทียบกับAndroid 5.x Lollipopแล้วโค้ดคือ:

Notification notification = new Notification();
...

ไม่มากไม่น้อย. นั่นคือรหัสที่เกี่ยวข้อง new Notification()จะ " สร้างNotificationวัตถุที่มีค่าเริ่มต้น " ในขณะที่ดูเหมือนว่าไม่มีการเปลี่ยนแปลงในความหมายโปรดทราบdefaultsว่าไม่ได้ตั้งค่า / เริ่มต้นเป็น Notification.DEFAULT_ALL(ค่า: -1) แต่เนื่องจากไม่มีการเริ่มต้นก็จะมีการผิดนัด 0 ซึ่งเป็นไม่มีการแจ้งเตือน

ไม่ว่าจะเป็นข้อผิดพลาดของ Google ที่ถูกแก้ไขใน Marshmallow หรือไม่ฉันไม่รู้ นั่นเป็นเหตุผลว่าทำไมไม่มีการแจ้งเตือนใน Android Lollipop แต่ตอนนี้มีใน Android Marshmallow


"คุณทำไม่ได้" ฉันเดิมพันที่คุณสามารถมีโมดูล Xposed (หรืออย่างน้อยบางส่วนอ่านเบื้องต้นทำให้ฉันคิดว่านี้) แม้คนหนึ่งอาจจะต้องเขียนมันตัวเอง ...
znt

1

วิธีเดียวที่ฉันพบว่ากำจัดการสั่นสะเทือนที่น่ารำคาญคือปิดการใช้งานการแจ้งเตือน 'wifi ที่มี' อย่างสมบูรณ์ หากต้องการไปที่การตั้งค่า -> wifi -> แตะที่จุดแนวตั้งสามจุด -> ไปที่ 'การตั้งค่าขั้นสูง' และปิดการแจ้งเตือนสำหรับเครือข่าย wifi ที่สาธารณชนเข้าถึงได้ รอการแก้ไขฉันคิดว่ามันเป็นทางออกเดียวและไม่เลวร้ายที่สูญเสียการปิดการใช้งานฉันมักจะคิดว่าพวกเขาไร้ประโยชน์พอ


3
ขอบคุณสำหรับคำตอบ. ดูเหมือนว่าจะใช้งานไม่ได้ แต่มันยังคงแสดงการแจ้งเตือนและแรงสั่นสะเทือนแม้หลังจากปิดตัวเลือก 'การแจ้งเตือนเครือข่าย'
Ritz

1
การแก้ไขนี้ไม่ทำงานบน Nexus 5 ของฉันเช่นกัน
dbasch

ฉันลองสิ่งนี้กับ Moto X Pure แล้วและมันก็ไม่ทำงานเหมือนกัน
Nat Kuhn

ไม่เกี่ยวกับ Moto E รุ่นที่สองของฉัน
Andy Clark

1

การตั้งค่า> แอพ> บริการเชื่อมต่อของ Google> การแจ้งเตือน> บล็อกปิดการใช้งานทั้งหมด


ขอบคุณ (สมมติว่ามันใช้งานได้)! ตอนนี้ฉันต้องการวิธีที่จะจำได้ว่าฉันบล็อกสิ่งนี้เมื่อพวกเขาแก้ไขมัน ...
4322 Nat

น่าเสียดายที่สมมติฐานนั้นไม่ถูกต้อง ... ไม่สามารถใช้งาน Moto X Pure ของฉันได้
Nat Kuhn

0

การแจ้งเตือนนั้นเริ่มต้นโดยระบบ Android ( android) คุณสามารถใช้ appops เพื่อปฏิเสธระบบ Android ที่ได้รับอนุญาตให้สั่นสะเทือนอุปกรณ์ในทุกสถานการณ์ โดยมีเงื่อนไขว่าคุณได้ตั้งค่าในพีซีให้ทำ:

adb shell appops set android VIBRATE deny

ลองเชื่อมต่อกับ Wi-Fi โดยไม่มีการเชื่อมต่ออินเทอร์เน็ต คุณจะยังคงได้รับการแจ้งเตือนนั้น แต่ไม่มีการสั่นสะเทือน หากคุณตั้งใจจะซ่อนการแจ้งเตือนนั้นคุณสามารถทำตามคำตอบที่เหลือที่โพสต์ไว้ที่นี่หรือบนเว็บไซต์นี้

หากต้องการคืนค่าการเปลี่ยนแปลงให้ทำ:

adb shell appops set android VIBRATE allow

การสั่นสะเทือนสำหรับการโทรเริ่มต้นโดยแอพ Dialer สำหรับ SMS มันจะเป็นแอพ SMS เริ่มต้นของคุณสำหรับข้อความ WhatsApp มันเป็นแอพเดียวกันดังนั้นจึงไม่ได้รับผลกระทบ อาจมีผลลัพธ์ที่ไม่คาดคิดจากคำสั่งนั้นซึ่งฉันไม่ทราบดังนั้นให้ฉันทราบเกี่ยวกับพวกเขาผ่านความคิดเห็น

หมายเหตุ: โซลูชันนี้ได้รับการทดสอบบนบิลด์ CM13 ที่ไม่เป็นทางการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.