确定android中是否可以通过wifi连接互联网

确定android中是否可以通过wifi连接互联网,android,android-wifi,Android,Android Wifi,我正在开发一个应用程序,将离线工作也 我的设想是: 我的手机有两个WIFI设备。Device1具有互联网连接,而Device2就像一个WIFI热点,它只发送我的应用程序将使用的少量数据 当我连接到设备2时,我开始收集数据并保存在移动SQLite中。当我切换到Device1并启动internet连接时,我将通过API调用将数据同步到我的服务器 情况是,当我访问互联网时,我应该能够进行API调用 我如何做到这一点 我看了很多文章,得到的只是wifi设备的连接状态,而不是互联网连接 注意:请不要让我尝

我正在开发一个应用程序,将离线工作也

我的设想是:
我的手机有两个WIFI设备。Device1具有互联网连接,而Device2就像一个WIFI热点,它只发送我的应用程序将使用的少量数据

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

情况是,当我访问互联网时,我应该能够进行API调用

我如何做到这一点

我看了很多文章,得到的只是wifi设备的连接状态,而不是互联网连接

注意:请不要让我尝试此代码:

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);<br/>
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();<br/>
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
ConnectivityManager cm=(ConnectivityManager)context.getSystemService(context.CONNECTIVITY_服务)
NetworkInfo activeNetwork=cm.getActiveNetworkInfo()
布尔值isConnected=activeNetwork!=null&&activeNetwork.isConnectedOrConnecting();
您可以尝试建立到远程主机的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);

您可以尝试建立到远程主机的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);

你唯一能做的就是

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();
    }
//检查设备连接状态

 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" />

你唯一能做的就是

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();
    }
//检查设备连接状态

 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" />


尝试创建HTTP请求并执行它。在响应代码中,您将得到Internet可用性的确认。请尝试创建HTTP请求并执行它。在响应代码中,您将得到有关Internet可用性的确认。好的,我将尝试此。。。。但我所期待的是,有没有一种方法可以不使用TCP或HTTP连接来查找internet状态??可能有一个框架可以为您处理这个问题。但是这只会建立一个TCP连接。。。你有进步吗?好的,我试试这个。。。。但我所期待的是,有没有一种方法可以不使用TCP或HTTP连接来查找internet状态??可能有一个框架可以为您处理这个问题。但是这只会建立一个TCP连接。。。你有进步吗?