구현하고자 하는거는 전화 벨 울릴때 전화 발신자 번호를 받고, 수신자가 전화를 받으면 토스트로 띄어주는것 입니다.
public class MyReceiver extends BroadcastReceiver {
static String incomingNum;
static int phone_flag = 0;
public void onReceive(Context context, Intent intent){
if(newState.equals(TelephonyManager.EXTRA_STATE_RINGING))
{
phone_flag = 1; incomingNum = b.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
}
if(newState.equals(TelephonyManager.EXTRA_STATE_OFFHOOK) && phone_flag==1)
{
Toast.makeText(context, "전화 : "+ incomingNum, Toast.LENGTH_SHORT).show();
}
if(newState.equals(TelephonyManager.EXTRA_STATE_IDLE)) { phone_flag = 0; }
}
여기서 처음 전화를 감지하여 벨이 울리면 ocReceive()가 호출되어서 벨이 울릴때 if구문으로 들어가서 실행합니다.
그래서 phone_flag가 1이 되고, 발신자 전화번호를 가져옵니다
그러나 벨 울린다음 수신자가 전화를 받으면 if 두번째 구문으로 넘어가게 하고 싶은데 MyReceiver 클래스가 재호출되는건지 phone_flag 가 0이되어서 두번째 구문을 실행하지 못합니다.........
이런식으로 하면 해결할 수 없는것 인가요?
조언 좀 주시면 감사하겠습니다.ㅠㅠ
전화수/발신 리시버는 한번의 수/발신 동작 마다 2~3번 연속 호출 됩니다
또 전화를 끊게 되면 한번더 호출이 되지요....
그래서 중간에 그런것들을 넘길수있는 간단한 상태값을 저장해서 진행해줘야 합니다 ....
안그럼 골룸
저희회사의 서비스는 전화 수발신마다 동작하게 되는 건데....
참 짜증나는면이 많아서리..고생좀 했었죠..