На Android как узнать номер телефона при входящем звонке?
Я пытаюсь получить номер входящего звонка. Я искал и нашел этот пост, но он устарел, и я не могу заставить его работать с последней версией Google Android (4.0.3).
После прочтения другого поста кажется, что самый простой (и, возможно, единственный) способ инициировать входящий вызов - это установить BroadcastReceiver, который реагирует на основе PhoneStateListener, упомянутого John Feminella.
Когда я настраиваю это так же, как это отображается в сообщении с помощью jakob, отладчик никогда не падает в метод onCallStateChanged(), и я внес изменения, которые были упомянуты в комментариях в сообщении jakob.. (onCallStateChange "d"())
Тем не менее, мне все еще не повезло, и я решил, что этот метод захвата входящего номера устарел и не работает в ICS (4.0.3). Существуют ли другие традиционные или полу-традиционные способы достижения этого?
2 ответа
Чтобы заставить это работать в более новых версиях Android (4.0.3 и т. Д.), Вам нужно убедиться, что ваш minSdkVersion равен 3. Проблема с моим кодом заключалась в том, что у моего minSdkVersion было 7..
Надеюсь, что это помогает другим, пытающимся понять это!:)
Что якоб не упоминает, так это то, что вы должны зарегистрировать PhoneStateListener перед его использованием. Поместите следующий код куда-нибудь, прежде чем вы захотите перехватить номер входящих вызовов (например, в методе onCreate вашей активности):
TelephonyManager manager=(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
manager.listen(new CustomPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);
Тогда метод onCallStateChanged должен быть запущен. Я не знал, что этот метод устарел в 4.0.3. Но я думаю, что в качестве быстрого решения это все еще должно быть хорошо.
Надеюсь, что помог вам. ура