Java 仅为两个联系人打开扬声器

Java 仅为两个联系人打开扬声器,java,android,Java,Android,我的处境很奇怪 我正在比较if语句中的两个字符串。这很奇怪,因为在CALL_STATE_Ring中它返回TRUE,但在CALL_STATE_OFFHOOK中它返回FALSE 以下是我代码的一部分: private String strRegisterNumber1 = ""; private String strRegisterNumber2 = ""; ........... strRegisterNumber1 = fileManager.getItems(0); strRegisterNu

我的处境很奇怪

我正在比较if语句中的两个字符串。这很奇怪,因为在CALL_STATE_Ring中它返回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);
  }
 }

以及我从我的文件管理器中检索的stregisterNumber,它们是正确的。

传入的号码仅在呼叫状态下返回,如官方文件中所述

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

EXTRA_STATE EXTRA表示新的呼叫状态。如果新国家 当铃声响起时,第二个额外的\u传入\u号码提供传入的信息 电话号码作为字符串


请使用每种情况下两个号码的确切值编辑您的帖子。因此,我可以在CALL_STATE_Ring中检索传入号码并在CALL_STATE_OFFHOOK中使用吗?可以,但您必须将传入号码存储在类变量中。在CALL_STATE_OFFHOOK中,检查号码是否为空,如果不为空,则之前的状态为CALL_STATE_RINGING,您可以使用该号码。在call state call_state_OFFHOOK中,您将保存数字的变量再次设置为null。