switch (state) {
case TelephonyManager.CALL_STATE_IDLE: //폰이 울리거나 통화중이 아닌 상태
case TelephonyManager.CALL_STATE_OFFHOOK: // 통화중인 상태
case TelephonyManager.CALL_STATE_RINGING: //벨이 울리는 상태
}
이게 전부이내요
case TelephonyManager.CALL_STATE_IDLE: 여기서 수신거부를 대충 잡을수가 있긴한데
전화통화버턴을 누르기전에
전화 건쪽에서 종료 했을때도 이놈을 태워서
완벽한 처리가 안되고 있습니다.
제가 원하는건 전화받는쪽에서 수신거부했을때 로직을 처리하고 싶어서 질문을 올립니다.
답변들 감사드립니다.
위에 질문이 난해 했나봅니다.
건방진프로그래머 말씀처럼 플래그변수로 해결이 되질 않는문제더군여
다시 정리를 해봅니다.
- 일반적으로 안드로이드폰은 전화가 왔을때 바탕화면에 노출되는
- 녹색버턴과[통화버턴]
- 빨간버턴[수신거부] 으로 구분됩니다.
제가 원하는건 전화받는쪽 안드로이드폰에서 빨간버턴[수신거부]를 했을때 Event를 잡고싶은겁니다.
case TelephonyManager.CALL_STATE_IDLE: <-- 이부분은 수신거부를 했거나 전화가 끊어지면 무족건 case에 걸리게 됩니다.
문제는 끊어지면 무족건 case에 걸리기 때문에
전화를 걸었던쪽에서 전화요청을 했다가 전화받는쪽에서 전화를 받기 전 또는 수신거부전에 종료버턴을 누르면
위에 case에 걸리게 됩니다.
전화를 걸었던 쪽에서 무슨짓을 하던 제가 원하는건 받는쪽에서 수신거부 했을때만 Event를 잡고 싶었던 거였습니다.
그래도 말이 어렵내요 ^^;
디폴트로 플래그를 false 해두고
링링 상태일때(전화벨이울리는 상태) 일때 true 해둡니다.
그리고 통화중인상태일때는 만약 플래그가 true이면 다시 false로 해두고
만약 상대가 수신거부라면 통화중상태는 안타고 바로 아이들 상태로 넘어갈테니
거기서 만약 플래그값이 true이면 수신거부가되는거겠죠.. 그럼 거기서 수신거부 루틴처리하고 플래그를 false로 원상복귀합니다..
이렇게하면 안되나요 ????? 이론상은 맞을거같은디..
건방진프로그래머님께 감사의 말씀올립니다.
제가 문장실력이 부족해서인지 한가지를 놓힌것 같습니다.
님께서 말씀하신대로 했을경우 전화를 받는쪽에서 수신거부를 했을경우 Event는 잡을수 있습니다.
문제는 전화를 걸었던쪽에서 전화를 받기 전 이거나 수신거부를 하기도전에
전화를 끊어 버리는 경우 전화벨이 울렸 던 쪽에서 무족건 수신거부 Event가 발생을 하게 됩니다.
제가 원하는건 전화를 걸었던쪽에서 무슨짓을 하던간에(전화를 끊어버린경우)
전화를 받는쪽에서 수신거부하는 Event만을 잡고싶었을 뿐이였습니다.
(받는쪽은 걸었던쪽에서 끊었다고 해서 수신거부 Event가 먹으면 안되는 상황)
아무턴 관심에 고개숙여 감사드립니다.




플래그변수를 쓰면되지않을가요