Java Android 网络访问:WIFI 还是 3G?

4

在我的Android应用中,需要访问远程服务器以发送请求,并接收响应以继续功能。

我需要澄清,在发送请求之前,我是否需要特别选择使用WIFI或移动(3G)互联网,在两者都可用的情况下。我不确定ANDROID操作系统本身是否会从它们中选择最佳选项,或者在运行时提供异常。由于我正在使用模拟器,因此无法进行测试。希望了解标准方法。

我可以通过以下代码检查它是否已连接到WIFI或3G(移动)。在发送请求之前,我想知道是否需要选择WIFI或MOBILE(3G)互联网。非常感谢适当的指导。提前致谢...

   ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo[] netInfo = cm.getAllNetworkInfo();

   for (NetworkInfo ni : netInfo) 
   {
       if (ni.getTypeName().equalsIgnoreCase("WIFI") && ni.isConnected())
       {
            Toast.makeText(getApplicationContext(), "Connected to Internet with WIFI", Toast.LENGTH_LONG).show();
       }
       if (ni.getTypeName().equalsIgnoreCase("MOBILE") && ni.isConnected())
       {
            Toast.makeText(getApplicationContext(), "Connected to Internet with 3G", Toast.LENGTH_LONG).show();
       }
   }
2个回答

4

如果同时有WIFI和移动网络(3G)可用,我需要特别选择哪一个?

这由操作系统处理。如果有已知并配置好的WIFI接入点可用,Android将使用它。

更重要的是,你无法自己“选择”。你得到操作系统给你的东西。


谢谢CommonsWare...如果ANDROID OS可以处理这个问题那就好了。我在想是否会出现任何异常情况..谢谢。我会继续的... - JibW

2

操作系统会自动处理。如果已知并配置了可用的WiFi接入点,Android将使用它。

这是正确的。我只是想通过运行你的代码来验证一下,所以我这样做了,结果如下。

步骤:

  1. 确保Wi-Fi已打开并连接。
  2. 确保移动(3G)网络已打开。
  3. 执行你上面的代码

结果:Android选择Wi-Fi而不是移动(3G)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接