2013-04-24 55 views
3

我想打開揚聲器並將其設置爲最大音量。 在我的PhoneStateListener中,我攔截了來電,並且對於任何傳入/傳出呼叫都可以正常工作。來電時打開揚聲器Android

事情是,我只想爲兩個特定的來電號碼打開此功能。

這是我的代碼:

case TelephonyManager.CALL_STATE_OFFHOOK: 
     if (incomingNumber.equals(strRegisterNumber1) || incomingNumber.equals(strRegisterNumber2)) 
     { 
      AudioManager audioManager = (AudioManager) contextMember.getSystemService(Context.AUDIO_SERVICE); 
      audioManager.setSpeakerphoneOn(true); 
      audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0); 

     } 
     break; 

沒有if語句,它工作正常,但詮釋揚聲器保持了他的情況。

請告知我做錯了什麼或如何實現我的目標?

謝謝你的幫助。

+0

所以,如果我理解正確的話,你的揚聲器啓用/套卷代碼工作 - 這是字符串比較總是返回false?您是否嘗試過記錄所有三個字符串以查看它們包含的內容? – Michael 2013-04-24 09:59:11

+0

是的。兩個字符串。這是奇怪的事情。它們包含我想要的來電號碼。我不明白是這個問題。 – OlejkaKL 2013-04-24 10:06:24

+0

我稍後使用相同的if語句並返回true! – OlejkaKL 2013-04-24 10:09:58

回答

0

incomingNumber.equals(strRegisterNumber1) || incomingNumber.equals(strRegisterNumber2) 

使用

incomingNumber.contains(strRegisterNumber1) || incomingNumber.contains(strRegisterNumber2) 

Instaed由於來電號碼可能與+國家代碼或00與國家代碼。所以你只需要檢查來電的號碼是否包含所需的號碼。

希望它可以幫助...

+0

試過了。不用找了。不管怎麼說,還是要謝謝你。 – OlejkaKL 2013-04-24 10:11:48

+2

你在if語句之前檢查/打印/記錄了「incomingNumber」,「strRegisterNumber1」和「strRegisterNumber2」的值。 – 2013-04-24 10:24:39