在Oreo中对拨出电话运行服务

时间:2018-06-26 13:20:11

标签: android broadcastreceiver outgoing-call

我正在开发一个应用程序,该应用程序在每次调用特定号码时都需要运行一些代码(开放活动)。 在API 24及更低版本中,我可以在清单文件中注册一个隐式接收器,并在扩展了BroadcastReceiver的指定类中启动我的服务。但是,在API 26中,您无法在接收器中注册android.provider.Telephony.OUTGOING_CALL,因为它无法正常工作。

来自Android文档:

  

注意:如果您的应用定位到API级别26或更高级别,则不能使用   清单以声明用于隐式广播的接收方(广播   并不专门针对您的应用),除了一些隐式   不受此限制的广播。在大多数情况下,   可以改为使用预定的作业。

我已经在媒体上阅读了几篇类似https://medium.com/@benexus/background-services-in-android-o-862121d96c95的文章。有诸如JobSchedulerExplicit Receiver之类的解决方案,但是第一个用于更改网络状态,我找不到在OUTGOING_CALL事件上触发作业的方法,第二个有效直到您的活动已启动并正在运行。

由于我的应用程序的性质,无论该应用程序是否运行,我都需要监听拨出电话。如何在API 26+中做到这一点?

1 个答案:

答案 0 :(得分:2)

在这里https://developer.android.com/guide/components/broadcast-exceptions,请注意,ACTION_NEW_OUTGOING_CALL不受您提及的奥利奥限制。

如果您尝试了一些代码,但是没有用,那么您应该发布该代码。