Я решил эту проблему, внедрив «Обходной префикс» в моем BroadcastReceiver
. Если мое клиентское приложение хочет позвонить по номеру напрямую, оно просто добавляет префикс перед вызовом ACTION_CALL
Intent.
Если набранный номер имеет префикс (с жестким кодированием), BroadcastReceiver
удаляет префикс и позволяет продолжить вызов в обычном режиме:
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if (Intent.ACTION_NEW_OUTGOING_CALL.equals(action)) {
String number = getResultData();
if (number.startsWith(BYPASS_PREFIX)) {
setResultData(number.substring(BYPASS_PREFIX.length()));
} else {
// do additional processing
}
}
}
Это решает две проблемы за один раз - это не только останавливает зацикливание вызовов, но и дает мне возможность обойти дополнительную обработку для определенных номеров, сохраняя префикс в записях их телефонной книги.