我怎样才能发送HTTP请求的手机状态变化时?

问题描述 投票:0回答:1

我听着就PhoneStateListener的变化,我想使每个有变化时的URL请求。我将任何输入感谢。

我曾尝试用下面的代码没有成功摆弄。日志信息工作正常,但请求到web服务器无法正常工作。

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);
        }

    }
}
java android httpurlconnection phone-state-listener
1个回答
0
投票

你可能没有权限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,访问策略,路由问题...

© www.soinside.com 2019 - 2024. All rights reserved.