2013-04-24 94 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