5

Tôi đang tìm cách dừng/loại bỏ thông báo nền trước cho một dịch vụ cho trình phát đa phương tiện, tương tự như việc triển khai Google Music cho Google.Tôi làm cách nào để xóa thông báo nền trước trong Android Lollipop?

Ví dụ: trong Google Music, nếu bạn đang phát nhạc thì thông báo không thể bị xóa. Tuy nhiên nếu bạn tạm dừng âm nhạc, nó có thể.

Điều này hoàn toàn khác với cách triển khai trên Android 4.4, nơi thông báo chỉ bắt đầu khi bạn thoát ứng dụng và tự xóa khi bạn quay trở lại ứng dụng. Tôi không thể xem cách thực hiện điều này hoặc xem xét các yêu cầu đối với dịch vụ để có thông báo.

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

7

Làm cách nào để xóa một notifiactio tiền cảnh trong Android Lollipop?

Bạn có thể loại bỏ foreground của riêng bạn bằng cách gọi NotificationstopForeground() từ Service của bạn mà gọi startForeground().

Ví dụ trong Google Music, nếu bạn đang phát nhạc thì thông báo không thể bị xóa. Tuy nhiên nếu bạn tạm dừng âm nhạc, nó có thể.

Có lẽ, họ đang cập nhật giá trị setOngoing() cho Notification dựa trên việc nhạc có đang phát hay không.

+0

Vì vậy, ý tưởng là nếu bạn quay lại ứng dụng thì không cần phải có thông báo đang chạy khi bạn đang thực sự sử dụng ứng dụng? Google thực hiện điều này một cách khác với Google Music trong Android Lollipop nơi thông báo luôn chạy, cho dù bạn có đang ở trong ứng dụng hay không. Tôi biết nó có lẽ là một điều tầm thường, nhưng trong việc phát triển ứng dụng của tôi, tôi đã gặp nó và muốn hiểu rõ hơn tại sao. Và cảm ơn bạn đã trả lời của bạn, nhiều đánh giá cao. –

+2

@DumonKri: Nếu giao diện người dùng của bạn ở nền trước, dịch vụ nền trước sẽ không thêm gì vào ưu tiên quy trình của bạn. Và, nếu giao diện người dùng của bạn ở nền trước, người dùng có thể có cách tương tác tốt hơn với ứng dụng của bạn thông qua giao diện người dùng đó thông qua 'Thông báo' của bạn. – CommonsWare

+0

Cảm ơn @CommonsWare, điều đó rõ ràng là có ý nghĩa. Đó là cách mà Google thực hiện nó khác nhau trong Google Music trong Android 4.4 và 5 khiến tôi bối rối. Có thể nó sẽ thay đổi với các bản cập nhật cho ứng dụng cho Lollipop. –

3

Bạn cũng có thể loại bỏ các thông báo một cách khéo léo:

  • dịch vụ 1 bắt đầu với startForeground(1, new Notification());
  • bắt đầu dịch vụ thứ 2 với startForeground(1, new Notification()); và ngay lập tức ngăn chặn nó

Kết quả là dịch vụ 1 là vẫn chạy ở nền trước nhưng thông báo đã biến mất nhờ dừng dịch vụ thứ 2. Tôi đã tìm thấy nó một cách tình cờ :).

+0

Đây là một thủ thuật tuyệt vời, nhưng tiếc là nó đã được vá trong Android 7.1. – Sam

Các vấn đề liên quan