Я создаю приложение для Android, которому нужна сеть, чтобы получить некоторую информацию из XML-файла. У меня этот код, который ищет, если пользователи позволило сети:Как проверить, имеет ли сеть состояние изменения во время выполнения моего приложения для Android?
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {
return true;
}
return false;
}
Я использую эту функцию так:
boolean connected = isOnline();
if(connected)
getLocation();
else
showDialogNetwork();
Функция showDialogNetwork():
public void showDialogNetwork() {
new AlertDialog.Builder(this)
.setMessage("No network")
.setTitle("Error")
.setCancelable(false)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// launch settings
Intent settings = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
startActivity(settings);
}
})
.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
// finish activity
finish();
}
})
.show();
}
Если сеть на устройстве отключена, то showDialogNetwork() откроет вкладку сети в меню настроек. Но когда пользователи включают Wi-Fi, и приложение работает в фоновом режиме, оно не «понимает», что сеть включена. Мне нужно «убить» приложение после включения сети, чтобы получить информацию из Интернета. Как я могу постоянно проверять, изменилось ли состояние сети во время выполнения моего приложения? Заранее спасибо, ребята :)