在Android上如何从来电中获取电话号码?

时间:2012-01-16 13:12:51

标签: android phone-number

我正试图抓住来电的“来电号码”。我搜索并找到this post,但它已经过时了,我似乎无法使用谷歌最新版本的Android(4.0.3)。

在阅读另一篇文章后,似乎触发调用的最简单(也可能是唯一)方法是设置一个基于PhoneStateListener作出反应的BroadcastReceiver,由John Feminella提及。

当我按照jakob在帖子中显示的相同方式进行设置时,调试器永远不会进入 onCallStateChanged()方法,并且我已经进行了提到的修改在jakob的帖子中的评论..(onCallStateChange“ d ”())

然而,我仍然没有运气,我认为这种获取incoming_number的方法已被弃用,而不适用于ICS(4.0.3)。有没有其他常规或半传统的方法来实现这一目标?

2 个答案:

答案 0 :(得分:2)

为了让这款适用于较新版本的Android(4.0.3等),您需要确保 minSdkVersion 3 ..问题我的代码是 minSdkVersion 7 ..

希望这有助于其他人试图解决这个问题! :)

答案 1 :(得分:0)

jakob未提及的是您必须在使用之前注册PhoneStateListener。在您想拦截来电号码之前,请将以下代码放在某处(例如,在您的活动的onCreate方法中):

TelephonyManager manager=(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
manager.listen(new CustomPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);

然后应该触发onCallStateChanged方法。我不知道这个方法在4.0.3中已弃用。但我认为作为一种快速解决方案,这应该仍然没问题。

希望能帮到你。 干杯