あなたはIDLE
状態にあり、あなたが電話を取得するとき、それはOFFHOOK
状態 とに行く何のコールを持っていない場合、あなたのコールは再びそれを終了IDLE
状態
になると詳細は、この
How to know whether I am in a call on Android?
Eを参照してください DIT:
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
// Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show();
if(UDF.phoneState != TelephonyManager.CALL_STATE_IDLE) {
//Here you are came from offhook because value of UDF.phoneState != TelephonyManager.CALL_STATE_IDLE
//IDLE is calls many times so you have to keep track by a static variable like UDF.phoneState
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
//Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show();
break;
case TelephonyManager.CALL_STATE_RINGING:
//Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show();
endCallIfBlocked(incomingNumber);
break;
default:
break;
}
UDF.phoneState = state;
}
私は知っている、問題は私が電話で変更しようとしているということです。状態がOFF_HOOKの仕事であり、その電話がIDLEに戻ったときに動作しません。あなたが送信したリンクのコードに変更しようとしましたが、それでも同じ問題があります。 – ItayM
私は自分の答えを編集しましたが、問題が残っていても、ちょうどあなたが何を望んでいるのか教えてください。 – Dharmendra
@Dharmendra、あなたは 'BroadcastReceiver'の電話状態をキャッチする必要があります。それは十分だ。あなたがリスナーの状態を追跡しても、ものはまだ間違っています。つまり、あなたの道ではなく、 'BroadcastReceiver'で追跡してください。どうもありがとうございます :-) –