>

PhoneStateListener의 변경 사항을 듣고 있으며 변경이있을 때마다 URL을 요청하고 싶습니다. 모든 의견에 감사드립니다.

성공하지 않고 아래 코드를 피하려고했습니다. 로그 메시지는 정상적으로 작동하지만 웹 서버에 대한 요청은 작동하지 않습니다.

private class PhoneCallListener extends PhoneStateListener{
    private boolean isPhoneCalling = false;
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        if (TelephonyManager.CALL_STATE_RINGING == state)
        {
            // phone ringing
            Log.i("LOG_TAG", "RINGING, number: " + incomingNumber);
            try {
                URL url = new URL("http://example.com/log.php?state=Ringing");
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.disconnect();
            }
            catch (MalformedURLException ex) {
                Log.e("httptest",Log.getStackTraceString(ex));
            }
            catch (IOException ex) {
                Log.e("httptest",Log.getStackTraceString(ex));
            }
            Log.i("LOG_TAG", "RINGING, number: " + incomingNumber);
        }
    }
}


  • 답변 # 1

    https://developer.android.com/training/permissions/requesting 권한이 없을 수도 있습니다

    워커 스레드에서 http io 코드를 실행 해보십시오 :

    private class PhoneCallListener extends PhoneStateListener {
        private boolean isPhoneCalling = false;
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            if (TelephonyManager.CALL_STATE_RINGING == state)
            {
                new AsyncTask<String,Void,Void>(){
                    @Override
                    protected Void doInBackground(String... voids) {
                        // phone ringing
                        String incomingNumber=voids[0];
                        Log.i("LOG_TAG", "RINGING, number: " + incomingNumber);
                        try {
                            URL url = new URL("http://example.com/log.php?state=Ringing");
                            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                            urlConnection.disconnect();
                        }
                        catch (MalformedURLException ex) {
                            Log.e("httptest",Log.getStackTraceString(ex));
                        }
                        catch (IOException ex) {
                            Log.e("httptest",Log.getStackTraceString(ex));
                        }
                        Log.i("LOG_TAG", "RINGING, number: " + incomingNumber);
                        return null;
                    }
                }.execute(incomingNumber);
            }
        }
    }
    
    

    또한 네트워크 문제가 있는지 확인하십시오;예 : DNS, 액세스 정책, 라우팅 문제 ...

관련 자료

  • 이전 파이썬으로 엑셀 (xls) 파일 읽기/파싱
  • 다음 javascript - 검도 업로드 방법은 onUpload 이벤트를 발생시키지 않습니다