我正在开发一个应用程序,该应用程序在每次调用特定号码时都需要运行一些代码(开放活动)。 在API 24及更低版本中,我可以在清单文件中注册一个隐式接收器,并在扩展了BroadcastReceiver的指定类中启动我的服务。但是,在API 26中,您无法在接收器中注册android.provider.Telephony.OUTGOING_CALL,因为它无法正常工作。
来自Android文档:
注意:如果您的应用定位到API级别26或更高级别,则不能使用 清单以声明用于隐式广播的接收方(广播 并不专门针对您的应用),除了一些隐式 不受此限制的广播。在大多数情况下, 可以改为使用预定的作业。
我已经在媒体上阅读了几篇类似https://medium.com/@benexus/background-services-in-android-o-862121d96c95的文章。有诸如JobScheduler
或Explicit Receiver
之类的解决方案,但是第一个用于更改网络状态,我找不到在OUTGOING_CALL事件上触发作业的方法,第二个有效直到您的活动已启动并正在运行。
由于我的应用程序的性质,无论该应用程序是否运行,我都需要监听拨出电话。如何在API 26+中做到这一点?
答案 0 :(得分:2)
在这里https://developer.android.com/guide/components/broadcast-exceptions,请注意,ACTION_NEW_OUTGOING_CALL不受您提及的奥利奥限制。
如果您尝试了一些代码,但是没有用,那么您应该发布该代码。