允许呼叫继续进行,但阻止其他接收器处理它的广播接收器?



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

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

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

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

如果你想先看到这个数字,你可以这样做(具有更高的优先级),但你必须忍受其他接收者在你看到它之后看到它。 或者,你可以最后看到这个数字(通过将你的优先级降低到0),但你必须忍受其他接收者在你之前看到这个数字。

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

接收此意向的任何广播接收器不得中止广播。

相关内容

最新更新