Я пытаюсь получить информацию с веб-сайта (некоторый текст) в своем приложении. Проблема в том, что иногда мой метод не работает. Я построил это и использовать его для проверки подключения к Интернету:Ошибка приложения при отсутствии подключения к сети
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager
.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
Однако, иногда телефонам сказать приложению, которое тер действительно является подключением к Интернету, когда нет фактической стабильных один, а затем приложение падает.
Фактические обновлённая информации находится в задаче асинхронной и выполняется, как это, где crackerTask моя асинхронная задача:
if (this.isNetworkAvailable()) {
crackerTask.execute(TESTSTRINGURL);}
else {
Toast.makeText(NewsAndAnnouncements.this,
"No web connectivity. Try again later.", Toast.LENGTH_LONG)
.show();
}
Как я могу избежать аварий программы, когда мой телефон говорит приложение есть интернет, а нет?
EDIT: вот асинхронная задача, если это помогает.
private class NewsAsyncTask extends AsyncTask<String, String, String> {
ProgressDialog dialog1;
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog1 = ProgressDialog.show(NewsAndAnnouncements.this, "Loading",
"Fetching data from web...");
}
@Override
protected String doInBackground(String... arguments) {
// extract arguments
String newsurl = arguments[0];
//
Document doc = null;
try {
doc = Jsoup.connect(newsurl).get();
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
Elements myElements = doc.getElementsByClass("news_list");
string1 = myElements.toString();
Log.i("ELEMENTS HTML", string1);
return string1;
}
@Override
protected void onPostExecute(String result) {
// super.onPostExecute(result);
FINALSTRING = result;
tv2.setText(FINALSTRING);
if (dialog1 != null) {
if (dialog1.isShowing()) {
dialog1.dismiss();
}
}
}
}
также, я не могу сказать вам результаты журнала, потому что я не могу имитировать ситуация с активной сетью, но плохой интернет :( – NoodlesFromHell