Java Android互联网接入:WIFI或3G

时间:2012-03-05 11:48:36

标签: java android mobile android-intent android-service

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

我需要澄清一下,在发送请求之前,我是否必须在两者都可用的情况下特别选择它应该是WIFI或移动(3G)互联网。我不确定ANDROID OS本身会选择其中最好的或者会在运行时给出异常。当我使用模拟器时,我无法测试它。想知道标准方式。

我可以通过以下代码检查它是否已连接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 个答案:

答案 0 :(得分:4)

  

我是否必须特别选择在可用的情况下应该是WIFI或移动(3G)互联网

操作系统处理此问题。如果有可用的已知和配置的WiFi接入点,Android将使用它。

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

答案 1 :(得分:2)


操作系统处理此问题。如果有可用的已知和配置的WiFi接入点,Android将使用它。

这是事实。我只是想通过运行你的代码来验证这一点,所以我做了这个,结果是。

步骤:

  1. 确保Wifi已开启并已连接。
  2. 确保移动(3G)网络已开启。
  3. 执行上面的代码
  4. 结果:  android选择wifi而不是移动(3g)