TL; DR
Nếu bạn vẫn muốn có rung trên tất cả các thông báo ngoại trừ cổng bị khóa (vấn đề cụ thể này) , tôi sợ bạn không thể .
Đó là dbasch được đề cập trong bình luận , rằng độ rung (thực ra là chính cảnh báo thông báo ) đã được thêm vào Marshmallow.
Chi tiết kỹ thuật
Khi Android phát hiện ra rằng WiFi cần phải đăng nhập vào cổng bị khóa, như bạn đã nhận thấy, nó sẽ tạo ra một thông báo. Nó được thực hiện bởi setProvNotificationVisibleIntent()
chức năng trong ConnectivityService
.
Hiển thị hoặc ẩn thông báo cung cấp mạng.
Chúng tôi sử dụng thông báo cho hai mục đích: để thông báo rằng mạng yêu cầu đăng nhập ( NotificationType.SIGN_IN
) hoặc để thông báo rằng mạng không có quyền truy cập Internet ( NotificationType.NO_INTERNET
). Chúng tôi hiển thị tối đa một thông báo cho mỗi ID, vì vậy trên một mạng cụ thể, chúng tôi có thể hiển thị loại thông báo được yêu cầu gần đây nhất. Vì vậy, ví dụ nếu một cổng bị khóa không trả lời trong vòng vài giây NO_INTERNET
sau khi kết nối, trước tiên chúng ta có thể hiển thị và sau đó khi kiểm tra cổng bị khóa hoàn tất, hiển thị
SIGN_IN
.
Mã có liên quan đến cảnh báo thông báo được sử dụng trong Android 6.0 Marshmallow :
Notification notification = new Notification.Builder(mContext)
...
.setDefaults(Notification.DEFAULT_ALL)
...
Lưu ý rằng Notification.DEFAULT_ALL
sẽ " sử dụng tất cả các giá trị mặc định (nếu có) ", điều đó có nghĩa là tùy thuộc vào cài đặt thông báo của hệ thống của bạn (âm thanh, độ rung và đèn LED).
So với phiên bản trong Android 5.x Lollipop , mã là:
Notification notification = new Notification();
...
Không nhiều không ít. Đó là mã có liên quan. new Notification()
sẽ " xây dựng một Notification
đối tượng với các giá trị mặc định ". Mặc dù có vẻ như không có thay đổi về ý nghĩa, lưu ý rằng defaults
không được đặt / khởi tạo thành Notification.DEFAULT_ALL
(giá trị: -1). Thay vào đó, vì không có khởi tạo, nó sẽ được mặc định là 0, không có cảnh báo .
Cho dù đó có phải là lỗi do Google bỏ qua đã được sửa trong Marshmallow hay không, tôi không biết. Ngoài ra, đó là lý do tại sao không có cảnh báo trong Android Lollipop, nhưng bây giờ đã có trong Android Marshmallow.