2011-12-10 156 views
0

现在我有我的联系人选择器返回联系人的电话号码。我试图将该号码与来电号码相匹配,所以如果相等,它会将音量增加到最大值。我不太明白。任何帮助?增加某些联系人来电时的铃声音量。 Android

这是我的代码。 “号码”是我的联系人选择器返回的号码。

public class phoneStateListener extends PhoneStateListener { 

    public void onCallStateChanged(int state, String incomingNumber){ 


      switch(state){ 
        case TelephonyManager.CALL_STATE_RINGING: 

          break; 
      }  

} 

public class broadCastReceiver extends BroadcastReceiver { 

    public void onReceive(Context context, Intent intent) { 

     TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
      PhoneStateListener PhoneListener = new PhoneStateListener(); 

     telephony.listen(PhoneListener, PhoneStateListener.LISTEN_CALL_STATE); 


     Bundle bundle = intent.getExtras(); 
     String phoneNr= bundle.getString("incoming_number"); 


     if (phoneNr == number){ 

      amanager.setStreamVolume(AudioManager.STREAM_RING, 7, AudioManager.FLAG_ALLOW_RINGER_MODES|AudioManager.FLAG_PLAY_SOUND); 

     } 

    } 
+0

你可以使用==运算符来测试是否相等,除非它是一个String,在这种情况下使用incomingPhone.equals(contactPhone):)或者,“严重”的答案是......“你到目前为止尝试过什么,或者你会喜欢从汤到坚果的整个解决方案吗?“ (提示:你不可能得到那个)。 –

+0

我在那里添加了我的代码。 – Evan

回答

0

在我的意见,我是一个聪明的驴子和戏谑有关如何比较字符串,而是看你的代码,事实证明这是突出的建议。我不知道什么number是(我没有看到它在你的代码示例中),但因为phoneNr是一个字符串,我假设number也是。在Java中,你比较字符串的等式不是与==,而是与字符串的equals()布尔方法。 ==比较内存空间,所以你会检查它们是否都指向同一个String对象,而它们几乎肯定不是,即使它们是你不关心的。

+0

我替换了“if(phoneNr == number){”with“if(phoneNr.equals(number)){”,该应用仍然没有增加铃声音量。 – Evan

+0

你的代码应该移入交换机。如果你只是简单地“休息”,你应该在哪里进行比较来电号码和联系人的工作,以及所有这些......在那里记录一些日志,以便看看自己是否实际上在电话被呼叫时调用该代码铃声。另外...非常重要...你注册你的接收器吗?如果不确定查看文档,否则它将永远不会收到任何通知。 http://developer.android.com/reference/android/content/BroadcastReceiver.html –

+0

我注册了接收器,现在任何时候都有人打电话给应用程序部队关闭。 – Evan

相关问题