Tôi đã sử dụng cùng một pendingIntent để đặt nhiều báo thức bằng cách sử dụng intentId khác nhau cho mỗi báo thức. báo thức đang hoạt động. Bây giờ tôi muốn hủy bỏ một báo động cụ thể. Nếu tôi sử dụng phương thức cancel(), tôi sẽ hủy tất cả các báo động. Tôi chỉ muốn một người cụ thể bị xóa. Ngoài ra, người dùng sẽ có thể hủy báo thức này ngay cả trong lần khởi chạy thứ hai hoặc thứ ba. Như trong khi tôi khởi động nó lần thứ hai, tôi sẽ không có cùng một đối tượng pendingIntent. Tôi có phải tiếp tục tồn tại đối tượng pendingIntent không? Nếu vậy, làm thế nào? và làm cách nào để hủy một báo thức từ nhiều báo thức?Hủy báo thức đơn khi bạn có nhiều báo thức
Trả lời
Bạn có thể làm điều đó như thế này,
Trong Ý định chờ của bạn, bạn có thể vượt qua một unique ID
ở vị trí của requestCode
PendingIntent pi = PendingIntent.getBroadcast(context, unique_id, i, 0);
và hủy bạn có thể sử dụng cùng một ID duy nhất để hủy nó, sử dụng cùng một mục đích đang chờ xử lý.
am.cancel(pi);
Để nhận được thêm thông tin bạn chỉ có thể sử dụng StackOverflow hoặc Google, cho bây giờ tôi nghĩ this answer
sẽ làm cho bạn. :)
Nếu bạn đặt unique_id thành thời gian báo thức bằng mili giây, bạn có thể đảm bảo rằng nó sẽ là duy nhất. Do đó bạn có thể dễ dàng hủy bỏ nó. Tôi đã xác minh tác phẩm này. Phương thức lịch là calendar.getTimeInMillis() – bschwagg
Đây là một loại hack để làm điều này với lời giải thích.
Trước hết, bạn nên tạo mục đích duy nhất cho mục đích đang chờ xử lý. Với mục đích này, bạn có thể tạo trường dữ liệu tùy chỉnh của mục đích cho ứng dụng của bạn. Tôi làm điều này theo cách sau:
Intent intent = new Intent();
intent.setAction(ExampleAppWidgetProvider.MY_INTENT_ACTION);
Uri data = Uri.withAppendedPath(
Uri.parse("myapp://myapp/Id/#"),
String.valueOf(intentId));
intent.setData(data);
Trong trường hợp của bạn intentId
sẽ là của bạn xác định duy nhất mục đích.
Sau đó, bạn tạo thông báo alarmManager như bình thường. Để hủy báo thức, bạn nên thực hiện các bước sau. Lúc đầu, bạn nên tạo một mục đích như trong mẫu mã trước đó. Sau đó, bạn tạo mục đích đang chờ xử lý dựa trên ý định này (bạn cũng tạo cùng một mục đích đang chờ xử lý cho báo thức). Và sau đó bạn hủy báo động này:
Intent intent = new Intent();
intent.setAction(ExampleAppWidgetProvider.MY_INTENT_ACTION);
Uri data = Uri.withAppendedPath(
Uri.parse("myapp://myapp/Id/#"),
String.valueOf(intentId));
intent.setData(data);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
- 1. cách đặt nhiều báo thức bằng cách sử dụng trình quản lý báo thức android
- 2. Java Enums: Phương thức triển khai sau khi khai báo?
- 3. Xamarin: Nền tảng Cross đơn giản Ứng dụng báo thức
- 4. Android AlarmManager: có cách nào để hủy TẤT CẢ báo thức được đặt không?
- 5. Android báo động bị hủy sau khi đóng ứng dụng
- 6. cảnh báo 10: biểu thức này phải có loại đơn vị
- 7. Nhận tất cả các báo thức được lưu trong ứng dụng báo thức
- 8. Cách đặt Báo thức bằng cách sử dụng lớp đồng hồ báo thức
- 9. Trình quản lý báo thức trong android
- 10. Chồng hoặc lịch sử báo thức?
- 11. Cách dừng báo thức trong android
- 12. Phương thức EquInfo để khai báo Loại
- 13. Tìm kiểu khai báo của phương thức
- 14. Khai báo giao thức như @class
- 15. Cách đặt Báo thức trong Android?
- 16. Báo thức iPhone sử dụng thông báo cục bộ lặp lại
- 17. Bạn có thể chuyển luồng qua nhiều phương thức không?
- 18. AlarmManager - Cách lặp lại báo thức ở đầu mỗi giờ?
- 19. Hủy sự kiện báo chí chính
- 20. Thông báo cảnh báo R trên biểu thức đệ quy: Nếu bạn thất bại, hãy thử, thử lại
- 21. Cách hủy chỉ báo getUserMedia sau khi ghi
- 22. Cách xác định phương thức nào không được triển khai khi XCode có cảnh báo
- 23. Ý kiến của bạn về việc khai báo hằng số bên trong các phương thức ...?
- 24. Thực thi mã khi thông báo Android bị hủy
- 25. Kiểu lập trình khai báo phương thức của các biến phương thức get/set trong C++?
- 26. Thuật ngữ giao thức: Thông báo so với gói
- 27. Ứng dụng đồng hồ báo thức trong .Net
- 28. Tại sao bạn khai báo phương thức getters và setters riêng tư?
- 29. Android - Cách tạo lời nhắc/Báo thức trong Ứng dụng
- 30. Bạn phải gọi phương thức "WebSecurity.InitializeDatabaseConnection" trước khi bạn gọi bất kỳ phương thức nào khác của lớp "WebSecurity"
Tôi không biết phương thức nào để hủy báo thức đơn lẻ của một nhóm báo thức có cùng mục đích đang chờ xử lý. Nhưng bạn có thể đánh dấu thời gian báo thức cụ thể là bị hủy bằng cách sử dụng một số phương pháp kiên trì (tùy chọn chia sẻ, tệp, sqlite, ...) và trong mã được gọi thông qua ý định báo động đánh giá thông tin đã lưu để xác định xem báo thức đã đã hủy. Hoặc bạn có thể hủy tất cả các báo thức và đặt tất cả các báo thức nhưng sau đó (nếu bạn vẫn biết tất cả các lần). BTW, bạn không cần mục đích ban đầu đang chờ xử lý, bạn có thể tạo mục đích mới. – Stefan