Класс BroadcastReceiver
должен перехватывать все вызовы.Проверьте, правильно ли зарегистрирован класс получателя в AndroidManifest.xml
:
<receiver android:name="Receiver" android:exported="true" android:enabled="true">
<intent-filter android:priority="1">
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<action android:name="android.intent.action.PHONE_STATE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
Тем не менее, я не верю, что можно отменить вызов после завершения функции приемника.Я пытался переместить setResultData(null)
в поток с задержкой в несколько секунд, но я считаю, что причина этого не в том, что намерение уже выполнено и вызов был запущен.
Единственный способто, что это могло бы быть возможно, запачкало ваши руки внутренними вызовами API в PhoneFactory .Было много попыток сделать это (насколько мне известно, безуспешно), и есть громкое «не делай этого!»от сообщества.