【问题标题】:BroadcastReceiver which allows call to proceed, but prevents other receivers from processing it?BroadcastReceiver 允许呼叫继续,但阻止其他接收者处理它?
【发布时间】:2017-06-19 04:56:45
【问题描述】:

我有一个应用程序,它是一个广播接收器,它处理 NEW_OUTGOING_CALL 意图。我的手机上还有其他应用程序注册为这些意图的接收器,但我的应用程序注册了更高优先级的意图过滤器,因此我的 BroadcastReceiver 可以首先看到这些意图。

我希望能够以编程方式阻止 NEW_OUTGOING_CALL 的任何其他已注册 BroadcastReceiver 处理这些意图,但我希望允许电话呼叫继续进行。这可能吗?

【问题讨论】:

  • 作为一个建议,将意图名称放在反引号中(1 键左侧的按钮)以将它们格式化为代码并使问题更易于阅读。
  • 完成。谢谢...这里的新手... :-)
  • 不用担心,需要一段时间才能掌握格式化 SO 帖子的窍门 :)

标签: android android-intent broadcastreceiver


【解决方案1】:

我不认为你真的可以做你想做的事。此操作的documentation 非常清楚地描述了系统期望如何处理此广播:

为保持一致性,任何旨在禁止电话呼叫的接收器的优先级都应为 0,以确保它会看到最终要拨打的电话号码。任何旨在重写要呼叫的电话号码的接收器都应该具有积极的优先级。为该广播系统保留负优先级;使用它们可能会导致问题。

如果您想先看到号码,您可以这样做(具有更高的优先级),但是您必须在看到它之后与其他接收者一起生活。或者,您可以最后看到号码(通过将优先级降低到0),但您必须先与其他接收者一起看到号码。

请注意,另一个人建议中止广播。这不仅没有意义,因为系统需要广播的结果,而且文档中也明确说明not要中止此广播。

任何接收到此 Intent 的 BroadcastReceiver 都不得中止广播。

【讨论】:

  • 谢谢!我将为一个相关(但足够不同)的问题打开一个单独的主题......
猜你喜欢
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多