私は非常に奇妙な状況にあります。
if ステートメントで 2 つの文字列を比較しています。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;
}
}
ここで何が問題なのですか?
ご協力ありがとうございました!
編集:
私がここから取得しているincomingNumber:
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 は正しいです。