如何获取Android的网络连接状态?

8

如何在HTC One应用程序开发中获取Android网络连接状态?

我是Android开发的新手,我将开发一个需要互联网的应用程序。因此,我需要获取互联网的状态。任何帮助都将不胜感激。


请查看此链接:http://stackoverflow.com/a/10617567/1659523 - Shaji Thorn Blue
5个回答

6

尝试以下方法并阅读更多

public static String getConnectivityStatusString(Context context) {
    int conn = NetworkUtil.getConnectivityStatus(context);
    String status = null;
    if (conn == NetworkUtil.TYPE_WIFI) {
        status = "Wifi enabled";
    } else if (conn == NetworkUtil.TYPE_MOBILE) {
        status = "Mobile data enabled";
    } else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) {
        status = "Not connected to Internet";
    }
    return status;
}

或者另一种简单的方法来完成任务。
private boolean haveNetworkConnection() {
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
    if (ni.getTypeName().equalsIgnoreCase("WIFI"))
        if (ni.isConnected())
            haveConnectedWifi = true;
    if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
        if (ni.isConnected())
            haveConnectedMobile = true;
}
return haveConnectedWifi || haveConnectedMobile;
}

在你的Android清单中:

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

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

`<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />`

1

使用这段代码:此代码可在所有Android版本中运行。

public static boolean isInternetOn(Context context) 
    {
         boolean haveConnectedWifi = false;
         boolean haveConnectedMobile = false;

         ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo[] netInfo = cm.getAllNetworkInfo();
         for (NetworkInfo ni : netInfo) 
         {
             if (ni.getTypeName().equalsIgnoreCase("WIFI"))
                 if (ni.isConnected())
                     haveConnectedWifi = true;
             if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
                 if (ni.isConnected())
                     haveConnectedMobile = true;
         }
         return haveConnectedWifi || haveConnectedMobile;
    }

如果互联网可用,它会返回true,当互联网不可用时返回false。


0
您可以使用以下代码获取连接状态。
public abstract class NetworkUtils 
{
    public static boolean isNetworkConnected(Context context) 
    {
        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        return networkInfo != null && networkInfo.isConnected();
    }
}

您需要在 AndroidManifest.xml 文件中定义以下权限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

现在,您可以在任何活动中使用以下代码行调用上述方法:
if (!NetworkUtils.isNetworkConnected(getApplicationContext())) 
{
    // msg to display.
}

0
public static boolean isNetworkAvailable(Context context)
{
  return ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo() != null;
}

或者

public static boolean isNetworkAvailable(Context context) {
  boolean outcome = false;

  if (context != null) {
    ConnectivityManager cm = (ConnectivityManager) context
      .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo[] networkInfos = cm.getAllNetworkInfo();

    for (NetworkInfo tempNetworkInfo : networkInfos) {


      /**
       * Can also check if the user is in roaming
       */
      if (tempNetworkInfo.isConnected()) {
        outcome = true;
        break;
      }
    }
  }

  return outcome;
}

不要忘记在清单文件中添加这一行:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

-1

你好,请按如下方式创建一个名为ConnectionDetector的类:

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class ConnectionDetector {

    private Context _context;

    public ConnectionDetector(Context context){
        this._context = context;
    }

    public boolean isConnectingToInternet(){
        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;
                      }

          }
          return false;
    }
}

您可以按照以下方式使用此类

ConnectionDetector detector= new ConnectionDetector(getApplicationContext());

Boolean isInternetPresent = detector.isConnectingToInternet(); // true or false

有了这个布尔值isInternetPresent,你就可以在开发中进一步进行。

if (isInternetPresent) {
                    // Internet Connection is Present


                } else {
                    // Internet connection is not present

                }

为了支持这一切,您需要将权限添加到您的manifest.xml中。

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

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