Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android emulator中的Internet连接始终显示已连接状态_Android_Internet Connection - Fatal编程技术网

android emulator中的Internet连接始终显示已连接状态

android emulator中的Internet连接始终显示已连接状态,android,internet-connection,Android,Internet Connection,我尝试了很多方法在我的android模拟器中检查互联网连接 ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info= conMgr.getActiveNetworkInfo(); if(info != null || info.isConnected()) {

我尝试了很多方法在我的android模拟器中检查互联网连接

  ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);  

   NetworkInfo info= conMgr.getActiveNetworkInfo();  

         if(info != null || info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         }  
        else{  
            Log.v("NetworkInfo","Not Connected state");  
            Log.v("Reason",info.getReason());  
        } 
即使我在系统中禁用了Internet连接,我的代码似乎也会显示已连接状态 所以我猜这可能有用

 if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED  ) {

      Log.v("Congr","Connection Present");

    }
    else if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) {

      Log.v("conMgr"," No Connection");

    } 
但是,即使我断开网线,上面的代码也会显示“连接存在”。 。请帮助找到正确的方法。我在清单文件中拥有访问网络状态和INTERNET权限。

1断开INTERNET电缆与此无关。使用F8在emulator中关闭/打开internet

2在第一个代码中,此逻辑错误:

if(info != null || info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         } 
 else if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) {

      Log.v("conMgr"," No Connection");

    } 
应该是:

if(info != null && info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         } 
 else {

      Log.v("conMgr"," No Connection");

    } 
如果使用| |,则结果如下: a) 当info为null时,info.isConnected()将崩溃 b) 当信息不为空时,您将始终显示连接状态

但是,即使您解决了这个问题,代码也不会完全正确(参见4)

3在第二个代码中,此逻辑是错误的:

if(info != null || info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         } 
 else if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) {

      Log.v("conMgr"," No Connection");

    } 
应该是:

if(info != null && info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         } 
 else {

      Log.v("conMgr"," No Connection");

    } 
为什么??因为连接和断开的状态比连接和断开的状态多

但是,即使您解决了这个问题,代码也不会完全正确(参见4)

4这适用于模拟器和设备

connected = (   conMgr.getActiveNetworkInfo() != null &&
            conMgr.getActiveNetworkInfo().isAvailable() &&
            conMgr.getActiveNetworkInfo().isConnected()   )
请注意,使用isAvailable-如果不使用此选项,则当禁用WIFI时,isConnected会返回TRUE


希望这有帮助

实际上,这并不能告诉您模拟器是否通过主机PC连接到web。如果您在PC上运行它,并且PC的无线已关闭,则只要模拟器认为其处于联机状态,它仍会返回true。我能够确定模拟器是否真正在线的唯一方法是尝试获取一个页面,看看它是否成功。

是否在模拟器中启用/禁用3g连接?你可以按F8键。当你将模拟设备置于飞行模式时会发生什么?当我将模拟器置于飞行模式时,代码会起作用。stackoverflow真的很震撼,我从来没有想象过在我的帖子的几分钟内得到回复,谢谢你Macarse和Jim。当我置于飞行模式时,NetworkInfo得到空值,我选中“info”如上文所述,为空值,并提醒用户。我没有在实际设备中使用过。这种检查互联网连接的方法正确吗?我使用模拟器和网络模拟的经验是,它不能像您预期的那样工作,我通过反复试验发现了飞行模式的解决方法。与许多平台一样,精通Android需要大量的实验。“1.在仿真器中使用F8关闭/打开internet”,让我很开心!我可能是不小心推了一下,头撞到了上面。:-)