Я пытаюсь проверить, если есть активное подключение к Интернету, и после поиска, я нашел рабочий код ответил на Левита:Проверьте подключение к Интернету Андроида в фоновом
https://stackoverflow.com/a/27312494/2920212
Это, кажется, работает штраф, за исключением иногда, это вызывает задержку, когда она выглядит так, как приложение заморожено. Я знаю его, потому что функция isOnline не выполняется в фоновом потоке. Я искал, но не смог правильно реализовать фоновый поток. Здесь Вы можете найти код:
public boolean isOnline() {
Runtime runtime = Runtime.getRuntime();
try {
Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
int exitValue = ipProcess.waitFor();
return (exitValue == 0);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return false;
}
Вот что я пробовал:
private void ChecOnline() {
class CheckURL extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... params) {
return isOnline();
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
String myresult = Boolean.toString(result);
Toast.makeText(getApplicationContext(), myresult, Toast.LENGTH_LONG).show();
}
}
CheckURL ucc = new CheckURL();
ucc.execute();
Ничего не происходит, когда ChecOnline(); называется.
Пытались ли вы с AsyncTask? – wnieves19
Да, у меня есть, но я боюсь, что я, возможно, не реализовал его должным образом. –
Хорошо, есть ли у вас какие-либо сообщения журнала? Вы можете попробовать использовать отладчик и поставить точки останова в классе AsyncTask и посмотреть, что он возвращает, Btw, не очень хорошая идея поместить AsyncTask в метод. – wnieves19