我正在开发一个应用程序,只要执行对特定号码的呼叫,就需要运行一些代码(打开活动)。在 API 24 及更低版本中,我在 Manifest 文件中注册了一个隐式接收器,并在扩展 BroadcastReceiver 的指定类中启动我的服务。但是,在 API 26 中,您不能在接收器中注册 android.provider.Telephony.OUTGOING_CALL,因为它不起作用。
来自 Android 文档:
注意:如果您的应用程序以 API 级别 26 或更高级别为目标,则您不能使用清单来声明隐式广播(不专门针对您的应用程序的广播)的接收器,但一些不受该限制的隐式广播除外。在大多数情况下,您可以改用计划作业。
我已经阅读了几篇类似这样的文章https://medium.com/@benexus/background-services-in-android-o-862121d96c95 on medium。有像JobScheduler
或这样的解决方案Explicit Receiver
的解决方案,但是第一个用于更改网络状态,我找不到在 OUTGOING_CALL 事件上触发作业的方法,而第二个在您的活动启动并运行之前有效。
由于我的应用程序的性质,无论应用程序是否正在运行,我都需要监听拨出电话。如何在 API 26+ 中做到这一点?