2011-12-10 7 views
0

今、私は連絡先の電話番号を返す連絡先選択ツールを持っています。その番号と着信番号とを一致させようとしているので、等しい場合は最大になるように音量を上げます。私はそれを得ることができません。どんなヘルプ?特定の連絡先の着信音量を増加させます。 Android

ここに私のコードはとても遠いです。 "number"は私の連絡先のピッカーから返された番号です。私のコメントで

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

==演算子を使用すると、等号をテストすることができます。ただし、文字列でない場合は、incomingPhone.equals(contactPhone)を使用します:)また、 "深刻な"答えは... "これまでに試したことはありますか?スープからナッツまでのソリューション全体が欲しいですか? (ヒント:それを得る可能性は低いです)。 –

+0

私はこれまでに何を持っているのか自分のコードを追加しました。 – Evan

答えて

0

私はスマートなお尻であることと、文字列を比較する方法について冗談を言って、しかし、あなたのコードを見ていた、それが顕著なアドバイスだっ判明。私はnumberが(私はあなたのコードサンプルでそれを見ていない)がわからないですが、phoneNrは文字列なので、私はnumberと仮定しています。 Javaでは、==ではなく、文字列のequals()ブール値のメソッドと比較します。 ==はメモリスペースを比較するので、もしあなたがほとんど同じでないStringオブジェクトを指しているのかどうか、そしてあなたが気にしなくてもチェックします。

+0

私は "if(phoneNr == number){"を "if(phoneNr.equals(number)){"と置き換え、まだアプリがリンガーの音量を上げませんでした。 – Evan

+0

コードをスイッチに移動する必要があります。単純に「中断する」とは、着信番号と連絡先とを比較する作業を行うべき場所であり、そのすべてが...実際に電話があったときにそのコードが呼び出されていれば、リンギング。また...非常に重要です...受信機を登録していますか?そうしないと、ドキュメントには何も通知されません。 http://developer.android.com/reference/android/content/BroadcastReceiver.html –

+0

私は受信者を登録して、いつでも誰でもアプリを強制的に呼び出して閉じることができます。 – Evan

関連する問題