0

我想显示警报,在我的Android应用程序中不可用的连接。如何确定在Android的网络不可用性

我在我的应用程序中调用了一些休息请求。要检查此网络不可用情况,我手动断开我的笔记本电脑中的无线网络(我正在模拟器中测试)。

代码,我调用的服务是这里

resp = client.execute(httpPostRequest); 

我在这里捕捉异常

catch (IllegalStateException e) { 
      //assertTrue(e.getLocalizedMessage(), false); 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      //assertTrue(e.getLocalizedMessage(), false); 
      e.printStackTrace(); 
     } catch (IOException e) { 
      //assertTrue(e.getLocalizedMessage(), false); 
      e.printStackTrace(); 
     } 

,当我得到例外,我试图让与 该设备的网络连接的状态功能

public boolean IsInternetConnectted() 
    { 
     ConnectivityManager conMgr = (ConnectivityManager)this.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo i = conMgr.getActiveNetworkInfo(); 
     conMgr = null; 
     if (i == null) 
      return false; 
     if (!i.isConnected()) 
      return false; 
     if (!i.isAvailable()) 
      return false; 
     return true;   
    } 

即使wi-fi断开连接我的模拟器从这个函数返回true。

如何解决这个问题?

+0

要在仿真器中打开/关闭单元网络,请按F8并检查 – Zombie

回答

1

我发现,同样的错误在我的模拟器...... 但尝试在移动设备代码这段代码完美运行,而不是未来的任何错误在实际设备...

0

试试这个

public static Boolean checknetwork(Context mContext) { 

    NetworkInfo info = ((ConnectivityManager) mContext 
      .getSystemService(Context.CONNECTIVITY_SERVICE)) 
      .getActiveNetworkInfo(); 
    if (info == null || !info.isConnected()) 
    { 

     return false; 
    } 
    if (info.isRoaming()) { 
     // here is the roaming option you can change it if you want to 
     // disable internet while roaming, just return false 
     return true; 
    } 

    return true; 

} 
4

使用这段代码:

// added as an instance method to an Activity 
boolean isNetworkConnectionAvailable() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo info = cm.getActiveNetworkInfo();  
    if (info == null) return false; 
    State network = info.getState(); 
    return (network == NetworkInfo.State.CONNECTED || network == NetworkInfo.State.CONNECTING); 
}  
0

试试这个:

public static boolean isOnline(Context context) { 
     boolean state=false; 
     ConnectivityManager cm = (ConnectivityManager) 
     context.getSystemService(Context.CONNECTIVITY_SERVICE); 


     NetworkInfo wifiNetwork = 
      cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
      if (wifiNetwork != null) { 
      state=wifiNetwork.isConnectedOrConnecting(); 
      } 

      NetworkInfo mobileNetwork = 
      cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
      if (mobileNetwork != null) { 
      state=mobileNetwork.isConnectedOrConnecting(); 
      } 

      NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
      if (activeNetwork != null) { 
      state=activeNetwork.isConnectedOrConnecting(); 

      } 

      return state; 
     } 

获得更好的结果,检查实际设备..

0

发送的HttpRequest然后检查res ponse代码你正在如果200 你连接到互联网否则你不会也通知用户相应

0

要检查Internet连接

public class CheckNetwork { 


private static final String TAG = CheckNetwork.class.getSimpleName(); 



public static boolean isInternetAvailable(Context context) 
{ 
    NetworkInfo info = (NetworkInfo) ((ConnectivityManager) 
    context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); 

    if (info == null) 
    { 
     Log.d(TAG,"no internet connection"); 
     //Toast.makeText(context, "No Internet Connection", 1000); 
     return false; 
    } 
    else 
    { 
     if(info.isConnected()) 
     { 
      Log.d(TAG," internet connection available..."); 
      return true; 
     } 
     else 
     { 
      Log.d(TAG," internet connection"); 
      return true; 
     } 

    } 
} 
} 

在你的活动课

 if(CheckNetwork.isInternetAvailable(YourActivity.this)) 
      { 
       //your studd 
      } 

使用f7断开并连接仿真器。我不确定。去谷歌上查询。 或者,您可以使用广播接收器或服务。

0

试试这个:

public static boolean isNetworkAvailable(Context context) 
{ 
    ConnectivityManager cm = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo info = cm.getActiveNetworkInfo(); 

    return (info != null); 
} 
2

你好,请检查以下的答案:

http://stackoverflow.com/questions/13217676/how-to-check-the-real-internet-connected-in-android/13217956#13217956 

但我想建议你,它建议你应该在相当鸸真实设备测试连接代码lator。因为仿真器有些时候没有给出准确的输出。

相关问题