ตั้งแต่การอัปเดต Android 6.0 บน Nexus 5 ทุกครั้งที่ฉันได้รับการแจ้งเตือน 'ลงชื่อเข้าใช้เครือข่าย WiFi' โทรศัพท์จะสั่น มีความคิดใดบ้างที่ฉันจะปิดการทำงานนี้ในขณะที่ยังคงสั่นสะเทือนสำหรับการโทร SMS ข้อความ WhatsApp และอื่น ๆ
ตั้งแต่การอัปเดต Android 6.0 บน Nexus 5 ทุกครั้งที่ฉันได้รับการแจ้งเตือน 'ลงชื่อเข้าใช้เครือข่าย WiFi' โทรศัพท์จะสั่น มีความคิดใดบ้างที่ฉันจะปิดการทำงานนี้ในขณะที่ยังคงสั่นสะเทือนสำหรับการโทร SMS ข้อความ WhatsApp และอื่น ๆ
คำตอบ:
มีวิธีแก้ไขเฉพาะหน้าที่ไม่รบกวนโหมดลำดับความสำคัญเท่านั้น
ในการกล่าวง่ายๆคุณต้องใช้ลำดับความสำคัญเท่านั้น (จากการตั้งค่าด่วน - อย่ารบกวน ) เนื่องจากมีการตั้งค่าสำหรับแต่ละแอปสำหรับการแจ้งเตือนที่สามารถเขียนทับการตั้งค่าเริ่มต้นของระบบ โหมดลำดับความสำคัญเท่านั้นจะยังคงแสดงการแจ้งเตือนทั้งหมด อย่างไรก็ตามการแจ้งเตือนที่มีลำดับความสำคัญเท่านั้นที่จะได้รับการแจ้งเตือน (เสียงการสั่นสะเทือนและไฟ LED)
ความคิดคือการรักษาการแจ้งเตือนทั้งหมดเป็นสำคัญ (จากการตั้งค่า - เสียงและการแจ้งเตือน - การแจ้งเตือน App - [ชื่อแอป] - Treat เป็นสำคัญ)ยกเว้นสำหรับการแจ้งเตือนพอร์ทัลซึ่งอยู่ภายใต้ระบบ Androidแอป (โดยค่าเริ่มต้นปพลิเคชันระบบไม่ได้ระบุไว้ คุณต้องทำเครื่องหมายแสดงระบบจากเมนูล้นออกจากแอปนี้เป็นลำดับความสำคัญ แต่อย่าลืมแอพที่เหลือของระบบ)
อย่างไรก็ตามมีข้อเสียบางประการที่คุณควรพิจารณาก่อนใช้วิธีแก้ปัญหานี้:
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
วิธีเดียวที่ฉันพบว่ากำจัดการสั่นสะเทือนที่น่ารำคาญคือปิดการใช้งานการแจ้งเตือน 'wifi ที่มี' อย่างสมบูรณ์ หากต้องการไปที่การตั้งค่า -> wifi -> แตะที่จุดแนวตั้งสามจุด -> ไปที่ 'การตั้งค่าขั้นสูง' และปิดการแจ้งเตือนสำหรับเครือข่าย wifi ที่สาธารณชนเข้าถึงได้ รอการแก้ไขฉันคิดว่ามันเป็นทางออกเดียวและไม่เลวร้ายที่สูญเสียการปิดการใช้งานฉันมักจะคิดว่าพวกเขาไร้ประโยชน์พอ
การแจ้งเตือนนั้นเริ่มต้นโดยระบบ Android ( android
) คุณสามารถใช้ appops เพื่อปฏิเสธระบบ Android ที่ได้รับอนุญาตให้สั่นสะเทือนอุปกรณ์ในทุกสถานการณ์ โดยมีเงื่อนไขว่าคุณได้ตั้งค่าadbในพีซีให้ทำ:
adb shell appops set android VIBRATE deny
ลองเชื่อมต่อกับ Wi-Fi โดยไม่มีการเชื่อมต่ออินเทอร์เน็ต คุณจะยังคงได้รับการแจ้งเตือนนั้น แต่ไม่มีการสั่นสะเทือน หากคุณตั้งใจจะซ่อนการแจ้งเตือนนั้นคุณสามารถทำตามคำตอบที่เหลือที่โพสต์ไว้ที่นี่หรือบนเว็บไซต์นี้
หากต้องการคืนค่าการเปลี่ยนแปลงให้ทำ:
adb shell appops set android VIBRATE allow
การสั่นสะเทือนสำหรับการโทรเริ่มต้นโดยแอพ Dialer สำหรับ SMS มันจะเป็นแอพ SMS เริ่มต้นของคุณสำหรับข้อความ WhatsApp มันเป็นแอพเดียวกันดังนั้นจึงไม่ได้รับผลกระทบ อาจมีผลลัพธ์ที่ไม่คาดคิดจากคำสั่งนั้นซึ่งฉันไม่ทราบดังนั้นให้ฉันทราบเกี่ยวกับพวกเขาผ่านความคิดเห็น
หมายเหตุ: โซลูชันนี้ได้รับการทดสอบบนบิลด์ CM13 ที่ไม่เป็นทางการ