Android: 更改联系人时广播接收器的前台服务停止工作

Android: Foreground service with broadcast receiver stop working when changing contacts

所以我有这个 Android (API 29) 应用程序,我在其中使用 运行 广播接收器的前台服务,因此该应用程序可以在关闭时检测来电或者当用户重新启动设备时。我还有一个问题,案例如下:

  1. phone 将检测来电
  2. 它将尝试查看来电中的 phone 号码是否在联系人列表中
  3. 如果来电phone号码保存在通讯录中,来电信息正常显示
  4. 如果传入的 phone 号码对于联系人来说是“未知”的,它将获取有关呼叫者的信息并将其显示在 SYSTEM_ALERT_WINDOW.

问题是: 如果您要在前台服务 运行 时更改联系人或删除号码。广播接收器将停止工作。如果您随后收到 phone 呼叫,广播接收器出于某种原因会忽略它。

如果您退出 app/service 然后重新启动,一切都会正常进行,直到您对联系人列表进行更改。

感谢您的帮助

似乎从联系人列表中提取联系人时出现问题。我最终尝试了另一种从联系人列表中获取联系人的方法。这看起来解决了问题,但不确定接触检查如何破坏以前的实现。