【发布时间】:2012-11-08 16:26:02
【问题描述】:
我需要获取断开设备连接的网络。
现在我使用:
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 的情况下获取设备断开连接的网络的网络信息?
Sertorio Noronha,当我使用 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 仅返回现在连接的网络,但不返回我断开连接的网络。
如果我在日志中使用已弃用的 intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO),我会看到:
当我断开 WI-FI 并连接到 3G 时:
WIFI: false
mobile: true
当我断开 3G 并连接到 WI-FI 时:
mobile: false
WIFI: true
但我不想使用已弃用的 api。如何使用现代 api 获取我断开连接的网络?
【问题讨论】:
标签: android networking connectivity