【问题标题】:Android: Phone State in Broadcaster ReceiverAndroid:广播接收器中的电话状态
【发布时间】:2011-07-18 05:52:11
【问题描述】:

我使用广播接收器来捕捉电话状态的变化。 当状态第一次改变时它工作正常(对于 State_OffHook),但在呼叫结束时不反应。 这是我的代码:

String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);                     
            if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(state)) {working fine}
                else if (TelephonyManager.EXTRA_STATE_IDLE.equals(state)) {doesn't react}

【问题讨论】:

    标签: android broadcastreceiver


    【解决方案1】:

    当你没有电话时,你处于IDLE状态,当你接到电话时,它进入OFFHOOK状态 当您的通话结束时,它再次转到IDLE 状态

    了解更多信息 参考这个

    How to know whether I am in a call on Android?

    编辑:

    @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            super.onCallStateChanged(state, incomingNumber);
    
            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE:
                    // Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show();
                    if(UDF.phoneState != TelephonyManager.CALL_STATE_IDLE) {
                        //Here you are came from offhook because value of UDF.phoneState != TelephonyManager.CALL_STATE_IDLE
                        //IDLE is calls many times so you have to keep track by a static variable like  UDF.phoneState
                    } 
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK:
                     //Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show();
                    break;
                case TelephonyManager.CALL_STATE_RINGING:
                     //Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show();
                    endCallIfBlocked(incomingNumber);
                    break;
    
                default:
                    break;
            }
            UDF.phoneState = state;
         }
    

    【讨论】:

    • 我知道,问题是我正在尝试对手机进行更改。当状态为 OFF_HOOK 时,它的工作,而当该电话变回 IDLE 时,它不起作用。我已尝试将代码更改为您发送的链接中的代码,但我仍然遇到同样的问题。
    • 我已经编辑了我的答案,如果你有问题,那么告诉我你到底想要什么
    • @Dharmendra,您只需要在BroadcastReceiver 中获取电话状态。够了。即使您跟踪侦听器中的状态,事情仍然会出错。我的意思是,请按照自己的方式进行跟踪,但要使用BroadcastReceiver。非常感谢:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多