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