我需要获得与设备断开连接的网络。

现在我使用:

NetworkInfo ni =intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);

并检查:
ni.isConnected()

如果返回false ni-是断开设备连接的网络。

但是API 14中不推荐使用ConnectivityManager.EXTRA_NETWORK_INFO。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获取与我断开连接的网络?

最佳答案

您可以使用以下内容

ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
int networkType = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_TYPE);
boolean isWiFi = networkType == ConnectivityManager.TYPE_WIFI;
boolean isMobile = networkType == ConnectivityManager.TYPE_MOBILE;
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(networkType);
boolean isConnected = networkInfo.isConnected();

if (isWiFi) {
    if (isConnected) {
        Log.i("APP_TAG", "Wi-Fi - CONNECTED");
    } else {
        Log.i("APP_TAG", "Wi-Fi - DISCONNECTED");
    }
} else if (isMobile) {
    if (isConnected) {
        Log.i("APP_TAG", "Mobile - CONNECTED");
    } else {
        Log.i("APP_TAG", "Mobile - DISCONNECTED");
    }
} else {
    if (isConnected) {
        Log.i("APP_TAG", networkInfo.getTypeName() + " - CONNECTED");
    } else {
        Log.i("APP_TAG", networkInfo.getTypeName() + " - DISCONNECTED");
    }
}

关于android - ConnectivityManager.CONNECTIVITY_ACTION是否从API> = 14中断开网络连接?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13293220/

10-11 22:33
查看更多