代码之家  ›  专栏  ›  技术社区  ›  Charles

Android互联网连接检查问题

  •  16
  • Charles  · 技术社区  · 14 年前

    我对Android开发还很陌生,正在开发一个Android应用程序,它要求手机通过Wifi、EDGE或3G连接到互联网。

    public static boolean isConnected()
    {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        return cm.getActiveNetworkInfo().isConnectedOrConnecting();
    }
    

    我还在清单文件中设置了这些权限

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

    提前谢谢!

    5 回复  |  直到 6 年前
        1
  •  25
  •   CommonsWare    14 年前

    如果坠机是 在您的线路上:

    return cm.getActiveNetworkInfo().isConnectedOrConnecting();
    

    那就意味着 getActiveNetworkInfo() null ,因为没有活动的网络--在这种情况下,您的 isConnected() false .

        2
  •  8
  •   mutable2112    13 年前

    我写了这个方法来处理这个问题:

    public boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();
        if (ni!=null && ni.isAvailable() && ni.isConnected()) {
            return true;
        } else {
            return false; 
        }
    }
    

        3
  •  4
  •   Dhrupal    13 年前

    要检查互联网是否存在,只能在设备上检查……在仿真器上可能无法工作。。。。我有以下代码&它在安卓设备上100%工作……:)

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        tv = (TextView)findViewById(R.id.txt);
        b = checkInternetConnection();
    
    
        if(b!=true)
        {
            tv.setText("net is not dr.......");
        }
        else
        {
            tv.setText("net is dr.......");
        }
    
    }
    //Check weather Internet connection is available or not
    public boolean checkInternetConnection() {
               final ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
               if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() &&    conMgr.getActiveNetworkInfo().isConnected()) {
                     return true;
               } else {
                     System.out.println("Internet Connection Not Present");
                   return false;
               }
            }
    

    }

        4
  •  1
  •   Harshid    12 年前

    您已使用此代码段。

    ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (connectivity != null)
          {
              NetworkInfo[] info = connectivity.getAllNetworkInfo();
              if (info != null)
                  for (int i = 0; i < info.length; i++)
                      if (info[i].getState() == NetworkInfo.State.CONNECTED)
                      {
                          return true;
                      }
    
          }
    
        5
  •  -2
  •   yogi    13 年前

    is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected();
        isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected();
        network = is3g||isWifi;
    

    为了让自己能够使用wifi:

    WifiManager wifiManager = (WifiManager) MainWindowYuval.this.getSystemService(Context.WIFI_SERVICE);
                        wifiManager.setWifiEnabled(true);