2015-09-06 61 views
0

我想要做的是互联网和服务器和Web服务的工作程序,我创建了一个方法来检查网络可用,我用波纹管方法:如何检查互联网接入服务提供在Android中

private boolean isNetworkConnect() { 
     ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netinfo = cm.getActiveNetworkInfo(); 
     if (netinfo != null && netinfo.isConnected()) { 
      netType = netinfo.getTypeName(); 
      return true; 
     } else { 
      return false; 
     } 
    } 

这方法只是指定在Android的移动网络的WiFi是启用或禁用,但这是不够的互联网接入,因为如果我禁用我的笔记本电脑的WiFi,但我的Android应用程序在模拟器中说因特网访问因为WiFi或移动网络启用,但是,如果打开浏览器并搜索任何网站不是Access。!

I如何检查互联网访问,我在浏览器上搜索,从服务器等读取。什么是最佳解决方案?

+2

检查本作更好的解决方案 - http://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-never-timeouts – dhaval

回答

1

您的代码看起来不错。我已经在我自己的应用程序中使用此代码。

出现此问题是因为您正在使用模拟器测试您的应用程序。

如果你在真实设备isConnected()上测试你的应用程序的方法工作正常。

如果你想获得false回报在模拟器上isNetworkConnect()方法去

Settings > Wireless & network > Mobile network And uncheck "Data enabled"

+0

这不好。我做出你的解决方案,但它不工作。但我会在真实设备上测试并说出你真正的答案。 –

+0

谢谢。在我的真实设备上工作。 –

+0

如果你想检查真正的连接状态,你可以尝试从'HttpUrlConnection'读取响应并捕获异常。 –

0

您的方法一般是用于isOnline方法。它通过发送数据包不起作用,从而验证连接性。它基于状态,即是否连接到WiFi或移动网络。现在,就像你的情况一样,可能没有任何实际的连接。

要专门回答你的问题,这是你能做的最好的。但是,它并不能确保真正的连接。

0

试试这个(编辑为你想)

public void testURL() throws Exception { 
String strUrl = "http://stackoverflow.com/about"; 

try { 
    URL url = new URL(strUrl); 
    HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); 
    urlConn.connect(); 

    assertEquals(HttpURLConnection.HTTP_OK, urlConn.getResponseCode()); 
} catch (IOException e) { 
    System.err.println("Error creating HTTP connection"); 
    e.printStackTrace(); 
    throw e; 
} 

}

+0

我只是一个问题,我在模拟器中的方法只是指定WiFi或移动网络。是启用,但在真实设备的好,因为我启用WiFi和不连接到任何网络,我的应用程序说没有网络访问和工作的权利。为什么我们使用HttpUrlConnection? –

+0

有时连接没有响应,我们仍然连接。所以我们可以使用'HttpUrlConnection'来检查我们的连接是否工作并正确响应。 (对不起,我的英语不好:() –

+0

好的,谢谢。(不客气:-)) –