代码之家  ›  专栏  ›  技术社区  ›  Oren

Android CALL_STATE_OFFHOOK在很长一段时间后收到

  •  0
  • Oren  · 技术社区  · 11 年前

    我有一个通话记录应用程序,它可以对专用BroadcastReceiver的通话状态变化做出反应。
    BroadcastReceiver与 PROCESS_OUTGOING_CALLS 和 READ_PHONE_STATE 权限。

    我的问题是,出于某种原因,在一些电话中 CALL_STATE_OFFHOOK 通话结束几分钟后,国家广播。
    广播似乎被卡住了,过了一会儿就被触发了。“CALL_STATE_IDLE”后续广播大约在自 调用_状态_挂起 广播,其中X是实际呼叫所用的时间。
    我的日志验证了 onReceive 呼叫不会挂起进程或BroadcastReceiver。

    这种行为的原因是什么?

    更新:
    我发现,这是在我打开或关闭Wi-Fi并开始一个相对接近Wi-Fi变化的呼叫后发生的。
    这是问题的原因还是实际问题的症状?

    2 回复  |  直到 11 年前
        1
  •  0
  •   Kushal    11 年前

    在Android系统中,广播是内部处理的。

    有时,由于系统加载/重启/高运行时间,广播接收机有时间接收某些意图

    解决方法是添加Flag 标记_接收器_前景 发送广播的意图

    intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
    

    这将大大加快问题场景中的广播传输速度

        2
  •  0
  •   Community Mohan Dere    9 年前

    结果发现,这是android(或者某些功能不正常的接收器)发送广播时的一个错误。调查日志猫显示,一些系统接收器确实按时收到广播,而其他(在我之前)在很长时间后收到广播。
    每当通话开始期间Wi-Fi状态发生变化时,这种情况就会频繁发生。

    我所做的是创建一个 ITelephony 代理(记入 End call in android programmatically )并监控其状态。


    感谢帮助者:)