получение текущего номера телефона вызывающего абонента без использования ACTION_PHONE_STATE_CHANGED - PullRequest
1 голос
/ 17 мая 2011

У меня есть приложение, которое должно проверить, есть ли текущий звонок от определенного контакта.

Я знаю, что могу использовать широковещательное намерение ACTION_PHONE_STATE_CHANGED, чтобы получить номер вызывающего телефона на CALL_STATE_RINGING, но яЯ бы хотел использовать функцию TelephonyManager.getCallState и, если есть активный вызов (CALL_STATE_RINGING или CALL_STATE_OFFHOOK), получить номер телефона вызывающего абонента.

Есть идеи?

1 Ответ

2 голосов
/ 19 мая 2011

Итак, после дальнейшего изучения этого, я теперь уверен, что нет легкого пути для этого ...

Что я наконец-то сделал, так это прослушал намерение вещания ACTION_PHONE_STATE_CHANGED и NEW_OUTGOING_CALL и, когда я их получу, зарегистрируйте прикрепленное вещание (созданное мной), которое содержит дополнительный номер телефона и указание, является ли он входящим или исходящим вызовом , Я удаляю это липкое намерение, когда получаю ACTION_PHONE_STATE_CHANGED с CALL_STATE_IDLE).

Теперь, когда мне нужно узнать, есть ли активный вызов, я пытаюсь получить эту липкую трансляцию (registerReciever с нулевым получателем), и если есть доступная липкая, я могу получить номер телефона и указание входящего / исходящего звоните.

Одна вещь, которую все еще можно улучшить, - это лучшая обработка ожидающего вызова, поскольку ACTION_PHONE_STATE_CHANGED будет получен во время активного вызова, и я не могу сказать, какой из них активен ( см. Связанный вопрос )

...