2017-11-08 15 views
0

通話がアクティブな場合に通知音を再生したくないときに通知音が鳴っており、通話が鳴っている場合は、通知音を停止する必要があります。通話状態の通知

次のコードを試しましたが、現在の電話の状態を取得できません。

TelephonyManager telephonyManager = (TelephonyManager) 
context.getSystemService(Context.TELEPHONY_SERVICE); 
telephonyManager.listen(new CustomPhoneStateListener(context), 
PhoneStateListener.LISTEN_CALL_STATE); 

public class CustomPhoneStateListener extends PhoneStateListener { 
    //private static final String TAG = "PhoneStateChanged"; 
    Context context; //Context to make Toast if required 
    public CustomPhoneStateListener(Context context) { 
     super(); 
     this.context = context; 
    } 

    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 
     super.onCallStateChanged(state, incomingNumber); 

     switch (state) { 
     case TelephonyManager.CALL_STATE_IDLE: 
      //when Idle i.e no call 
      Toast.makeText(context, "Phone state Idle", Toast.LENGTH_LONG).show(); 
      break; 
     case TelephonyManager.CALL_STATE_OFFHOOK: 
      //when Off hook i.e in call 
      //Make intent and start your service here 
      Toast.makeText(context, "Phone state Off hook", Toast.LENGTH_LONG).show(); 
      break; 
     case TelephonyManager.CALL_STATE_RINGING: 
      //when Ringing 
      Toast.makeText(context, "Phone state Ringing", Toast.LENGTH_LONG).show(); 
      break; 
     default: 
      break; 
     } 
    } 
} 

答えて

1

あなたは、このような、この目的のためにbroadcastreceiver使用し、状態に基づいて、通知無効にすることができます。電話の中に

<receiver android:name=".PhonecallReceiver" > 
    <intent-filter> 
     <action android:name="android.intent.action.PHONE_STATE" /> 
    </intent-filter> 
    <intent-filter> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
    </intent-filter> 
</receiver> 
+0

こんにちは@masoudVali私は他のユーザーに電話するとどの状態になるのですか? –

+0

助けていただきありがとうございます。コードは正常に動作しています –

+0

この 'intent.getAction()。equals(Intent.ACTION_NEW_OUTGOING_CALL)' –

0

public class PhonecallReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
     String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE); 
     int state = 0; 
     if(stateStr.equals(TelephonyManager.EXTRA_STATE_IDLE)){ 
      state = TelephonyManager.CALL_STATE_IDLE; 
     } 
     else if(stateStr.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){ 
      state = TelephonyManager.CALL_STATE_OFFHOOK; 
     } 
     else if(stateStr.equals(TelephonyManager.EXTRA_STATE_RINGING)){ 
      state = TelephonyManager.CALL_STATE_RINGING; 
     } 

    } 
} 

とManifest.xmlファイル内の、onCallStateChanged()私たちは電話の状態を得ることができます。停止通知音のためにこれを試してください:

try { 
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(), notification); 
ringtone .stop(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 

ハッピーコーディング!

関連する問題