我有一个设备,我的应用程序可以通过 WIFI 连接到该设备,但是该设备没有互联网。我实现了一个 NetworkCallback 来捕捉连接的变化,如下所示:
public class ConnectivityNetworkCallback extends ConnectivityManager.NetworkCallback{
@Override
public void onAvailable(android.net.Network network) {
super.onAvailable(network);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
mConnectivityManager.bindProcessToNetwork(network);
else
ConnectivityManager.setProcessDefaultNetwork(network);
NetworkInfo networkInfo = mConnectivityManager.getActiveNetworkInfo();
int connectionType = networkInfo.getType();
Log.e("networkCallback", "connectionType: " + networkInfo.getTypeName());
switch(connectionType){
case ConnectivityManager.TYPE_WIFI:
String networkName = networkInfo.getExtraInfo().substring(1,networkInfo.getExtraInfo().length()-1);
Log.e("networkCallback","network type wifi, extra: " + networkName);
break;
case ConnectivityManager.TYPE_MOBILE:
Log.e("networkCallback","network type mobile, extra: " + networkInfo.getExtraInfo());
break;
}
}
@Override
public void onLost(android.net.Network network) {
super.onLost(network);
Log.e("networkCallback", "losing active connection");
}
}
当我的 Wifi 和移动数据都打开并且我在具有 Internet 访问权限的不同 wifi 网络之间切换时,“onAvailable()”会触发并打印以记录我已通过 wifi 连接。一旦我尝试连接到没有互联网的 wifi 网络,“onAvailable()”方法就会触发并打印出我已通过移动设备连接,并且设备会在 wifi 图标旁边显示一个感叹号。
有没有办法我仍然可以捕捉到我连接到没有互联网的 wifi 网络的情况?