Мне нужно получить сеть, от которой устройство было отключено.
Теперь я использую:
NetworkInfo ni =intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
И проверьте:
ni.isConnected()
если это возвращает false ni - это сеть, от которой устройство было отключено.
Но ConnectivityManager.EXTRA_NETWORK_INFO
устарело в API 14. Google рекомендует использовать getActiveNetworkInfo() для получения информации о сети. Но getActiveNetworkInfo() всегда возвращает сеть, к которой сейчас подключено устройство (isConnected()
должно возвращать true)!
Как получить сетевую информацию для сети, от которой отключено устройство, без использования ConnectivityManager.EXTRA_NETWORK_INFO?
Серторио Норонья, когда я использую getActiveNetworkInfo(), я получаю только ту сеть, к которой сейчас подключен! Но мне нужно получить сеть, от которой я отключился.
ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo n1 = cm.getActiveNetworkInfo();
Log.d("tets", String.format("%s: %s", n1.getTypeName(), n1.isConnected()));
При отключении от WI-FI и подключении к 3G в логе:
mobile: true
mobile: true
При отключении от 3G и подключении к WI-FI в логе:
WIFI: true
WIFI: true
WIFI: true
getActiveNetworkInfo возвращает только сеть, к которой я подключен сейчас, но не возвращает сеть, от которой я был отключен.
Если я использую устаревшее намерение.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO) в журнале, я вижу:
Когда я отключаюсь от WI-FI и подключаюсь к 3G:
WIFI: false
mobile: true
Когда я отключаюсь от 3G и подключаюсь к WI-FI:
mobile: false
WIFI: true
Но я не хочу использовать устаревший API. Как использовать современный API, чтобы получить сеть, от которой я был отключен?