扬声器仅适用于Android的两个联系人

时间:2013-04-29 17:47:35

标签: java android

我有一个非常奇怪的情况。

我在if语句中比较了两个字符串。这很奇怪,因为在CALL_STATE_RINGING中它返回TRUE,但是在CALL_STATE_OFFHOOK中它返回FALSE !!

以下是我的代码的一部分:

private String strRegisterNumber1 = "";
private String strRegisterNumber2 = "";
...........
strRegisterNumber1 = fileManager.getItems(0);
strRegisterNumber2 = fileManager.getItems(1);
...........
    switch (state)
    {
    case TelephonyManager.CALL_STATE_IDLE:
        Log.i("DEBUG", "idle");
        break;
    case TelephonyManager.CALL_STATE_OFFHOOK:

        if (incomingNumber.equals( strRegisterNumber1) || incomingNumber.equals( strRegisterNumber2))
            // returns FALSE here!
        {                   
            AudioManager audioManager = (AudioManager) contextMember.getSystemService(Context.AUDIO_SERVICE);
            audioManager.setSpeakerphoneOn(true);
            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);
        }

        break;
    case TelephonyManager.CALL_STATE_RINGING:
        if (incomingNumber.equals( strRegisterNumber1) || incomingNumber.equals( strRegisterNumber2))
                    // returns TRUE here!!!
        {
          //do something...

        }

        break;
    }
}

这里有什么问题?

感谢您的帮助!

编辑:

我从这里来的传入号码:

 ServiceReciever.java

public class ServiceReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    MyPhoneStateListener phoneListener = new MyPhoneStateListener(context);
    TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
    telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
  }
 }

我正从FileManager中检索的strRegisterNumber,它们是正确的。

1 个答案:

答案 0 :(得分:1)

传入的号码仅在CALL_STATE_RINGING中返回,如http://developer.android.com/reference/android/telephony/TelephonyManager.html#ACTION_PHONE_STATE_CHANGED的官方文件中所述

  

广播意图操作,指示设备上的呼叫状态(蜂窝)已更改。

     

EXTRA_STATE extra表示新的呼叫状态。如果是新状态   是RINGING,第二个额外的EXTRA_INCOMING_NUMBER提供传入   电话号码为字符串。