在android中检查Internet可用性

时间:2011-03-10 12:58:59

标签: android

在我的应用程序中有20个活动和大约30个webservice调用。我需要在调用webservice之前检查互联网可用性。我认为每次调用每个web服务之前调用网络可用性功能不是一种有效的方法。如何高效检查互联网的方式?

3 个答案:

答案 0 :(得分:2)

您可以注册以侦听与广播接收器的网络连接并存储结果。有关详细信息,请参阅此Stack Overflow帖子:How can I monitor the network connection status in Android?

答案 1 :(得分:1)

您可以定期检查网络可用性。

另外,请确保在没有网络连接时捕获连接时抛出的异常。

 /**
   * Checks if the phone has network connection.
   * 
   * @param context the context
   * @return <code>true</code> if the phone is connected
   */
  public boolean isConnected(Context context) {

     ConnectivityManager cm = (ConnectivityManager)
     context.getSystemService(Context.CONNECTIVITY_SERVICE);

     NetworkInfo wifiNetwork =
     cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
     if (wifiNetwork != null &&  wifiNetwork.isConnectedOrConnecting()) {
        return true;
     }

     NetworkInfo mobileNetwork =
     cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
     if (mobileNetwork != null && mobileNetwork.isConnectedOrConnecting()) {
        return true;
     }

     NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
     if (activeNetwork != null && activeNetwork.isConnectedOrConnecting()) {
       return true;
     }

     return false;
  }

答案 2 :(得分:0)

private boolean haveNetworkConnection(Context context)
{
    boolean haveConnectedWifi = false;
    boolean haveConnectedMobile = false;

    ConnectivityManager cm = (ConnectivityManager) Your_Activity_Name.this.getSystemService(Context.CONNECTIVITY_SERVICE);
    // or if function is out side of your Activity then you need context of your Activity
    // and code will be as following
    // (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo)
    {
        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
        {
            if (ni.isConnected())
            {
                haveConnectedWifi = true;
                System.out.println("WIFI CONNECTION AVAILABLE");
            } else
            {
                System.out.println("WIFI CONNECTION NOT AVAILABLE");
            }
        }
        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
        {
            if (ni.isConnected())
            {
                haveConnectedMobile = true;
                System.out.println("MOBILE INTERNET CONNECTION AVAILABLE");
            } else
            {
                System.out.println("MOBILE INTERNET CONNECTION NOT AVAILABLE");
            }
        }
    }
    return haveConnectedWifi || haveConnectedMobile;
}
相关问题