우선 프로그램은 전화번호를 입력하고 버튼을 누르면

 

인터넷서버에 접속해 접속번호를 받아와서 그 접속번호로 전화를 거는 프로그램입니다.

 

그런데 문제가 인터넷에 연결하는 시간이 2~3초정도 걸리더라구요..

 

그동안에 통화버튼을 또 누르면 전화가 2번걸리는(끊어지고나서 바로 또 걸리는)

현상이 발생합니다.

 

그래서 그런 현상을 막고자 progress dialog를 (인터넷에 연결해서 번호를 받아오는 동안) 넣었는데요..

 

이게 이렇게 꾸미니까 스레드 안에서 getUrlPage에 값을 넣는동안 밖에서는 계속 진행되더라구요..

 

값을 받아올때까진 dialog가 돌아갈줄알았는데.. 여러가지 방법을 시도해봤는데 잘 안되서 너무 답답한 마음에 질문을 올립니다..

 

while문을 돌려서 값이 들어가는동안 무한루프를 돌게하고 값이 들어오면 dismiss를 해봤는데 그냥 무한루프만 돌더군요;;

 

유쾌상쾌통쾌한 해결방법이 없을까요? 정말 이것때문에 미치겠습니다ㅠㅠ

 

 dialog = ProgressDialog.show(activity, "", "잠시만 기다려주세요..", true);
     
     new Thread(){
      public void run(){
       getUrlPage = getURL("finalUrl);
       dialog.dismiss();
      }
     }.start();
     
     
     String errMsg = accessNoDivider(getUrlPage, 1);
     
     if(getUrlPage.startsWith("0") == true){
      try {
    writeSDCard(destNo+";"+getDate(0)+"\n", 2, true);
   } catch (IOException e) {
    Toast.makeText(activity, "통화정보를 기록할 수 없습니다.", Toast.LENGTH_SHORT).show();
   }      
      
      return getUrlPage;
     }else{
      if(errMsg.equals("NOT_FREE")){
       showDialog(activity, "발신 제한", "발신 할 수 없는 국가입니다.");
      }else if(errMsg.equals("NOT_ALLOW_COST")){
       showDialog(activity, "발신 제한", "발신 할 수 없는 국가입니다.");
      }else if(errMsg.equals("ERROR_MAJOR")){
       showDialog(activity, "발신 제한", "발신 할 수 없는 국가입니다.");
      }else if(errMsg.equals("ERROR_SMCTRY")){
       showDialog(activity,"발신 제한", "사용자 국가 에러.");
      }else if(errMsg.equals("ERROR_SMCN")){
       showDialog(activity, "발신 제한", "가입자 번호 에러");
      }else if(errMsg.equals("ERROR_COCODE")){
       showDialog(activity, "발신 제한", "회사 코드 에러");
      }else if(errMsg.equals("ERROR_REQ")){
       showDialog(activity, "발신 제한", "REQ 에러");
      }else if(errMsg.equals("NO_RATE_TABLE")){
       showDialog(activity, "발신 제한", "발신 할 수 없는 국가입니다.");
      }
      return "ERROR";

 

 

 

 

 

 

 

 

 

 

profile