이것은 내가 사용하는 것입니다 ... 전화 상태가 변경 될 때마다 onCallStateChanged()
함수는 모든 PhoneStateListeners에서 호출되므로 처리해야합니다. 당신이 당신의 현재 활동에이를 추가하려는 경우,이
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
//Makes sure the audio is paused for incoming/outgoing phone calls
public class ListenToPhoneState extends PhoneStateListener {
private boolean pausedForPhoneCall = false;
private UIManager uiManager;
ListenToPhoneState(UIManager manager){
uiManager = manager;
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
resumeInAndroid();
return;
case TelephonyManager.CALL_STATE_OFFHOOK:
pauseInAndroid();
return;
case TelephonyManager.CALL_STATE_RINGING:
pauseInAndroid();
return;
}
}
private void resumeInAndroid(){
if(pausedForPhoneCall == true) {
pausedForPhoneCall=false;
uiManager.waitForPhoneCall(false);
}
}
private void pauseInAndroid(){
if(pausedForPhoneCall == false){
pausedForPhoneCall=true;
uiManager.waitForPhoneCall(true);
}
}
String stateName(int state) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE: return "Idle";
case TelephonyManager.CALL_STATE_OFFHOOK: return "Off hook";
case TelephonyManager.CALL_STATE_RINGING: return "Ringing";
}
return Integer.toString(state);
}
}
할 ...
ListenToPhoneState listener = new ListenToPhoneState(userInterface);
TelephonyManager tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if(tManager != null)
tManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
당신은 오히려 당신의 현재 활동을 중단하지 않을까요? 클래스에 현재 액티비티의 인스턴스를 전달하면, 정말로 원한다면 finish()를 호출하고 switch 문에서 새로운 액티비티 권한을 생성 할 수있다.
나는 그 게시물을 보았다. 어디에서 그 코드를 정확히 추가합니까? 나는 그것을 추가 할 곳과 PhoneStateReciever가 어떻게 호출되는지 이해하지 못한다. – AndroidDev93