android – ConnectivityManager.CONNECTIVITY_ACTION让网络从API> = 14中删除?

我需要从哪个设备断开网络.

现在我使用:

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

并检查:

ni.isConnected()

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

但是在API 14中不推荐使用ConnectivityManager.EXTRA_NETWORK_INFO.谷歌表示使用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仅返回连接到now的网络,但不返回断开连接的网络.

如果我在日志中使用弃用的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 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...