Android 13 上的问题:Android — 每天在特定时间重复通知

问题描述 投票:0回答:1

BroadCast 接收器遇到了专门针对 SDK 33 的问题。

你好,

我使用了 [AlarmManager] 中的指南来在特定时间建立每日通知。但是,我在 SDK 33 上遇到了问题。警报似乎没有触发我配置的广播接收器。我该如何解决这个问题?我们将非常感谢您的帮助。

android alarmmanager alarm
1个回答
0
投票

我理解您对 AlarmManager 和 BroadcastReceiver 在 Android 13 (SDK 33) 上无法工作感到沮丧。由于此版本中引入了更严格的背景限制,这可能会很棘手。但是,您可以采取一些步骤来排除故障并解决问题:

  1. 查看清单配置:

确保您的 BroadcastReceiver 在 AndroidManifest.xml 文件中正确声明,并具有 ALARM_TRIGGER 操作的相关意图过滤器。

仔细检查是否已将 BroadcastReceiver 的 android:exported 属性设置为 true。对于在 SDK 33 及更高版本上接收来自应用程序外部的广播,这是必需的。

  1. 验证权限使用情况:

确保您的应用程序具有所需的权限,例如 RECEIVE_BOOT_COMPLETED 和 WAKE_LOCK 来在后台安排和运行警报。 考虑将动态权限请求与 ActivityResultLauncher API 一起使用,以实现更好的用户控制和透明度。

  1. 使用 PendingIntent 标志:

确保用于启动 BroadcastReceiver 的 PendingIntent 具有适当的标志,例如 Android 13 要求的 FLAG_IMMUTABLE 或 FLAG_MUTABLE。 尝试不同的标志组合,看看它是否会影响警报触发(例如 FLAG_UPDATE_CURRENT 或 FLAG_CANCEL_CURRENT)。

  1. 考虑 WorkManager 或计划作业:

Android 建议在 Android 13 及更高版本上使用 WorkManager 或计划作业来执行重复任务,而不是 AlarmManager。 这些 API 提供更好的后台执行控制,并且对设备优化更具弹性。

  1. 调试与测试:

使用 Logcat 监视和调试 AlarmManager 和 BroadcastReceiver 的执行情况。 在不同的设备和 Android 版本上彻底测试您的应用程序,以确认该问题特定于 SDK 33。 其他资源:

Android AlarmManager 文档:https://developer.android.com/reference/android/app/AlarmManager

WorkManager 文档:https://developer.android.com/topic/libraries/architecture/workmanager

计划作业文档:https://developer.android.com/reference/android/app/job/JobScheduler

© www.soinside.com 2019 - 2024. All rights reserved.