마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

브로드캐스트 받았을때 DB(mysql)입력하는법을 어떻게해야할지(서비스로해야되는지..)

0 추천
지금 하려는게 전화를걸었을때 그 수신인의 폰번호를 브로드캐스트로 받을수가있더라구요 로그로 확인해보니.. 그래서 그 딱 전화를 걸었을때에 그번호를 DB에 저장하려고 하거든요!

제가 지금 만든것은 브로드 캐스트를 받으면 메인액티비티의 DB입력하는 함수(Asynctask)를 이용해서 했엇거든요.! 근데 이게 어플을 종료하면 DB입력이 안되요....... 생각해보니 어플이 종료 되서 메인액티비티에 있는 함수를 못쓰는건가요/??

그러면 서비스를 돌려서 브로드캐스트를 받았을 때 서비스를 시작시켜서 서비스에서 DB에입력을 시키고 서비스를 종료시켜서 하게끔해야하나요..???

이거 어떻게 해야하는지 잡히지가않네요... 도와주시면 감사하겠습니다.!
어렵네안드로이드 (590 포인트) 님이 2016년 12월 14일 질문

1개의 답변

0 추천
 
채택된 답변
굳이 메인엑티비티 함수 실행시키시지 마시고 리시버에서 http 통신 하시면 어떨가 싶습니다.

 

if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
                Log.d(TAG, " EXTRA_STATE_RINGING INCOMMING NUMBER : " + bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER));
                pnum = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
                HttpPostData7(pnum );            
            }

 

 public  void HttpPostData7(String my_phone_num) {

         try {
             URL url = new URL(server_url8);
             HttpURLConnection http = (HttpURLConnection) url.openConnection();
             http.setDefaultUseCaches(false);
             http.setDoInput(true);
             http.setDoOutput(true);
             http.setRequestMethod("POST");
             http.setRequestProperty("content-type", "application/x-www-form-urlencoded");
             StringBuffer buffer = new StringBuffer();
             buffer.append("my_phone_num").append("=").append(my_phone_num);    

             OutputStreamWriter outStream = new OutputStreamWriter(http.getOutputStream(), "UTF-8");
             PrintWriter writer           = new PrintWriter(outStream);
             writer.write(buffer.toString());
             writer.flush();

             InputStreamReader tmp = new InputStreamReader(http.getInputStream(), "UTF-8");
             BufferedReader reader = new BufferedReader(tmp);
             StringBuilder builder = new StringBuilder();
             String str;

             while ((str = reader.readLine()) != null) {
                 builder.append(str + "\n");
             }        
             HttpPostData_Result6 = builder.toString();    //mms 문구
             System.out.println("문구 :"+HttpPostData_Result6);
         } catch (MalformedURLException e) {

         } catch (IOException e) {

         }
     }

 

실제로 서비스중인 앱 소스 일부분입니다.
sadeva (21,550 포인트) 님이 2016년 12월 14일 답변
어렵네안드로이드님이 2016년 12월 14일 채택됨
오.. 답변 정말감사합니다.!!!!!!!!!!!!!!뭔가 해결될것 같아요..ㅎ! 혹시 궁금해서 그러는데 제가 지금DB입력할때 AsyncTask를써서하는 메소드를 사용하고있는데 이 메소드를 리시버에서 사용해도 상관없겠죠??? 안되면 sadeva님이 올려주신 저것을 이용하려고합니다..
...