#android
К примеру включили интернет, вывелось соответствующее сообщение, потом отключили его и опять получили соответствующее сообщение. Те мониторить состояние интернета в любой момент времени, а не единоразово
Ответы
Ответ 1
Вам нужно не мониторить состояние интернета, а получать уведомления о его изменении Определение состояния подключения в момент времени: boolean checkInternet(Context context) { ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); return activeNetwork.isConnectedOrConnecting(); } BroadcastReceiver на изменение состояния сети: public class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { if(checkInternet(context)){ Toast.makeText(context, "Network Available Do operations",Toast.LENGTH_LONG).show(); } } И в манифесте определить сам ресивер:И обязательно пермишен на получение состояния сети: Ответ 2
Получаем ConnectivityManager и выбираем какие броадкасты будем слушать: connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); intentFilter = new IntentFilter(); intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); BroadcastReceiver connectivityStatusReceiver = new NetworkConnectionStatusReceiver(); Когда нужно начать мониторить состояние интернета запускаем прослушку соответствующих интентов: context.registerReceiver(connectivityStatusReceiver, NETWORK_INTENT_FILTER)) Ну и собсно проверяем наличие интернета: protected boolean hasConnection() { NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo(); if (netInfo != null && netInfo.isConnected()) { switch (netInfo.getType()) { case ConnectivityManager.TYPE_MOBILE: case ConnectivityManager.TYPE_WIFI: case ConnectivityManager.TYPE_WIMAX: return true; default: return false; } } return false; } private class NetworkConnectionStatusReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (hasConnection()) { // network available } else { // no network }; } }
Комментариев нет:
Отправить комментарий