Я слушаю изменения в 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);
}
}
}
Извините, сообщение журнала работает нормально, но запрос к веб-серверу не работает.
есть исключение или ошибка?
Я не вижу никаких ошибок при шаге или беге на полной скорости




у вас может не быть разрешения 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, политика доступа, проблемы с маршрутизацией...
Спасибо. Звучит правильно. Я попробовал это сейчас, но я не получаю никакого положительного результата. Я не получаю никаких ошибок, и запрос не поступает на веб-сервер.
я думаю, что это проблема разрешения; я отсылаю вас к сообщению об этом;
Спасибо, у меня просмотр в приложении работает, но может там другие разрешения
Что не так с кодом выше? Разве не уволено? Выдает ошибку?