2016-12-04 129 views
0

我正在开发一个应用程序,也将离线工作。确定互联网连接是否可以通过WiFi在android

我的场景是这样的:
我有两个WIFI设备在我的手机范围内。 Device1具有互联网连接,因为Device2就像一个WIFI-Hotspot,它只发送我的应用程序将使用的少量数据。

当我连接到Device2时,我开始收集数据并保存在移动SQLite中。当我切换到Device1并开始连接互联网时,我将通过API调用将数据同步到我的服务器。

这种情况是我有权访问互联网时,我应该可以进行该API调用。

我该如何做到这一点?

我经历了很多文章,我得到的是WiFi设备的连接状态,而不是互联网连接。

注:请不要问我尝试这种代码:

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);<br/> 
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();<br/> 
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); 
+0

尝试创建一个HTTP请求并执行它。作为回应Code,您将获得有关Internet可用性的确认。 – Vinodh

回答

0

你唯一能做的就是

if(isNetworkAvailable}{ 
    if(isHostAvailable){ 
     //perform your communication 
    } 
} 

//检查服务器连接状态

private boolean isHostAvailable() { 
    URL url = new URL("http://stackoverflow.com");// specify the url 
    HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
    System.out.println(conn.getResponseCode()); 
    if(conn.getResponseCode().equalsIgnoreCase("200")){ 
      return true; 
    } 

    return false; 
} 

//检查设备连接状态

private boolean isNetworkAvailable() { 
     ConnectivityManager connectivityManager 
       = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
     return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
    } 

您还需要:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
1

你可以只尝试建立一个TCP连接到远程主机:

public boolean hostAvailable(String host, int port) { 
    try (Socket socket = new Socket()) { 
    socket.connect(new InetSocketAddress(host, port), 2000); 
    return true; 
    } catch (IOException e) { 
    // Either we have a timeout or unreachable host or failed DNS lookup 
    return false; 
    } 
} 

,并检查:

boolean online = hostAvailable("www.your-service.com", 80); 
+0

好的,我会试试....但我期待的是有没有办法找到互联网的地位,而不使用TCP或HTTP连接? –

+0

可能有一个框架可以为你处理这个问题。但是..这只会建立一个TCP连接... 你有没有取得进展? –

+0

雅这是为我工作...谢谢@Simon .... –

相关问题