【问题标题】:Android: Detect currently active phone number during phone callAndroid:在通话期间检测当前活动的电话号码
【发布时间】:2011-06-03 06:54:06
【问题描述】:

目标:在 Android 平台上,检测当前与用户通话的个人的电话号码。

目前使用PhoneListener,在通话保持的情况下存在一定的歧义。

案例:用户在通话期间与某人通话(“通话 1”)。用户因此处于呼叫状态OFFHOOK。然后,用户处于 RINGING 状态,指示有来电(“呼叫 2”)。然后状态变为 OFFHOOK。这可能表示两种可能性之一——用户应答呼叫 2,并将呼叫 1 置于保持状态。或者,用户拒绝了呼叫 2 并返回呼叫 1。

如何区分这两种情况?是否可以在手机上检测到CURRENT CALL的电话号码?

【问题讨论】:

    标签: android phone-number phone-call


    【解决方案1】:

    使用 PhoneStateLister 和 onCallStateChanged。 在那里您还可以看到来电号码。

    【讨论】:

    • 存在歧义问题 - 收到电话号码的唯一时间是处于 RINGING 状态。此状态并不意味着用户当前正在与谁通话,只是有来电。呼叫 1 是电话号码 X。呼叫 2 进来,我收到来自电话号码 Y 的 RINGING 状态。状态现在返回到 OFFHOOK。我在和谁说话?我是在与电话 1(电话号码 X)还是电话 2(电话号码 Y)通话?这就是我要解决的问题。
    • 但此方法始终将冲洗次数作为参数,如果状态为 OFFHOOK 也是如此。所以我认为处于 OFFHOOK 状态的电话号码是您当前正在通话的电话号码。但可以肯定的是,您必须测试或查找 onCallStateChanged 方法的文档。
    • 我在 NexusOne 上测试 2.1,并且 OFFHOOK 不提供电话号码作为参数,字符串只是空的(即使它是 onCallStateChanged 方法中的一个字段)。你能在手机上确认或否认这种行为吗?这是一些用于测试的快速而肮脏的示例代码:tutorialforandroid.com/2009/01/…
    • 我可以确认这适用于某些设备,而不适用于其他设备。例如,在 TMobile Fender 上,intent 包含电话号码,但在 Sprint Hero 上则不包含。不幸的是,似乎无法判断(甚至猜测)哪些设备会按预期运行。
    猜你喜欢
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多