Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.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
Java 如何以编程方式确定android是否连接到wifi?_Java_Android_Wifimanager - Fatal编程技术网

Java 如何以编程方式确定android是否连接到wifi?

Java 如何以编程方式确定android是否连接到wifi?,java,android,wifimanager,Java,Android,Wifimanager,我正在尝试在我正在开发的一个新android应用程序上设置一个自动化测试,但其中一个API有点问题 我面临的问题是,我想在wifi连接后开始测试,而不是在wifi处于连接状态时。我尝试了两种解决方案,但没有成功,测试似乎在我的android设备完全连接之前就开始了(wifi条上没有x) 这是我第一次尝试获取SSID以确定连接是否已建立的实现。但是测试仍然在完全连接之前开始,并且设置失败 ConnectivityManager connManager = (ConnectivityMan

我正在尝试在我正在开发的一个新android应用程序上设置一个自动化测试,但其中一个API有点问题

我面临的问题是,我想在wifi连接后开始测试,而不是在wifi处于连接状态时。我尝试了两种解决方案,但没有成功,测试似乎在我的android设备完全连接之前就开始了(wifi条上没有x)

这是我第一次尝试获取SSID以确定连接是否已建立的实现。但是测试仍然在完全连接之前开始,并且设置失败

ConnectivityManager connManager = 
    (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

wifiManager.setWifiEnabled(state);
while (!networkInfo.isConnected()) {
    Log.i("WifiStatus", "Here I am");
    Thread.sleep(Time.ONE_SECOND);
    networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
}
第二个实现是使用connectivity manager,并使用
isConnected()

是否有人有其他方法可以让我检查,以确定设备是否已完全建立与wifi的连接?

如果您想这样称呼它,请发送“ping”。如果连接完成,您就知道您仍然处于连接状态。如果您得到一个
IOException
NullPointerException
,那么您可能超时并且不再连接

try {
        URL url = new URL("http://www.google.com");
        HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
        urlConnect.setConnectTimeout(1000);
        urlConnect.getContent();
        System.out.println("Connection established.");
    } catch (NullPointerException np) {
        np.printStackTrace();
    } catch (IOException io) {
        io.printStackTrace();
    }

而不是手动获取网络信息。。。尝试获取“当前活动”网络并检查是否为wifi。注意:如果为空,则表示未连接任何网络。。。因此,它取代了断开连接的呼叫

ConnectivityManager connManager = 
    (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo current = connManager.getActiveNetworkInfo();
boolean isWifi = current != null && current.getType() == ConnectivityManager.TYPE_WIFI;

wifiManager.getWifiState()==wifiManager.WIFI\u STATE\u启用
当您获得完全连接时

可能会对google.com进行某种ping操作?谢谢!事实上,我必须使用该方法来确定与网络的完全连接。这将如何区分wi-fi连接与3G或边缘连接?问题是确定设备是否连接到wi-fi,而不是蜂窝网络。谢谢syb0rg!帮助很大。我不确定我使用的api是否已经解决了这个问题,但这是一个解决问题的方法。出于某种原因,当我使用这个api时,我遇到了一个问题,它会连接,但连接有限,并继续进行我不希望它执行的测试:(@Felix我想当android设备连接到WI-FI时,我想调用API更新数据库
ConnectivityManager connManager = 
    (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo current = connManager.getActiveNetworkInfo();
boolean isWifi = current != null && current.getType() == ConnectivityManager.TYPE_WIFI;