Страница 1 из 1

Отключить все сетевые подключения

Добавлено: 13 авг 2013, 21:55
Elek
Добрый день.
Пытаюсь сделать программную отключалку сетевых подключений.
Если активен только один тип подключения, WIFI или DATA, то все нормально отключается.
Если два, то андроид отключает только один из них, в моем случае это WIFI, так как он скорее всего имеет приимущество в плане очередности.

Проверяю подключение таким образом:

Код: Выделить всё

ConnectivityManager connectivityManager = (ConnectivityManager) ctx
				.getSystemService(Context.CONNECTIVITY_SERVICE);

	NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
Проверяю активен ли WIFI:

Код: Выделить всё

boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
И отменяю его:

Код: Выделить всё

WifiManager wifi = (WifiManager) ctx
						.getSystemService(Context.WIFI_SERVICE);
				wifi.setWifiEnabled(false);
Потом идет проверка мобильного инета :

Код: Выделить всё

boolean isMobile = activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE;
Так вот, есл вайфай был включен, то isMobile будет false. Я так понял, что изменения вступают в силу по истечению какого-то промежутка времени. Код выполняется в BroadcastReceiver.

Пытался обернуть функцию отключающую инет в Runnable и сделать Thread.sleep(5000); . Но тогда функция вообще не выполняется.

Посоветуйту пожалуйста, что с этим можно сделать и куда копать.
Спасибо.

Re: Отключить все сетевые подключения

Добавлено: 13 авг 2013, 23:39
Elek
В общем сам спросил, сам нашел ответ :oops: .
После отключение вайфая выполняю:

Код: Выделить всё

try {
	      Thread.sleep(TEN_SECONDS);
	} catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
и еще раз получаю состояние сети:

activeNetwork = connectivityManager.getActiveNetworkInfo();
После этого проверяю включен ли мобильный инет и отключаю его.