2011-12-10 140 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

相關問題