如何在Android中检查移动网络是否连接到互联网

时间:2014-04-01 04:01:31

标签: c# android xamarin.android

如何检查手机的分组数据是否已连接。因为当我在我的Android应用程序上启用移动数据选项时,即使我的SIM卡没有任何负载,它也始终连接。我的问题是如何验证我的Android应用程序中是否存在互联网连接。

这是我的代码。

    ConnectivityManager cm = (ConnectivityManager)this.GetSystemService(Context.ConnectivityService);



    NetworkInfo nf = cm.ActiveNetworkInfo;
    if (nf != null && nf.IsConnected == true)
    {
//connected
    }
    else
    {
//not connected
    }

但是在这段代码中。即使我没有负载。我的应用程序显示我仍然连接。帮帮忙..

5 个答案:

答案 0 :(得分:1)

试试这个:

boolean internetCheck;
internetCheck = isInternetAvailable(this);
if (internetCheck) {
                //Internet available
            } else {
                //No Internet available         }  
    /**
         * 
         * Method to check internet connection is available
         */

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

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

            NetworkInfo informationabtnet = cm.getActiveNetworkInfo();
            for (NetworkInfo ni : netInfo) {
                try {

                    if (ni.getTypeName().equalsIgnoreCase("WIFI"))
                        if (ni.isConnected())
                            haveConnectedWifi = true;
                    if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
                        if (ni.isConnected())
                            haveConnectedMobile = true;
                    if (informationabtnet.isAvailable()
                            && informationabtnet.isConnected())
                        connectionavailable = true;

                } catch (Exception e) {
                    // TODO: handle exception
                    System.out.println("Inside utils catch clause , exception is"
                            + e.toString());
                    e.printStackTrace();

                }
            }
            return haveConnectedWifi || haveConnectedMobile;
        }

答案 1 :(得分:0)

试试这个

//call web service
    ConnectivityManager con=(ConnectivityManager)getSystemService(Activity.CONNECTIVITY_SERVICE);
    boolean wifi=con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
    boolean internet=con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
    //check Internet connection
    if(internet||wifi)
    {
        Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show(); 
    }else{
                    Toast.makeText(this, "Not Connected", Toast.LENGTH_SHORT).show(); 
            }       

还要向您的清单文件添加以下权限

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

答案 2 :(得分:0)

Try this one.        
        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager
                .getActiveNetworkInfo();
        boolean isActive=activeNetworkInfo != null && activeNetworkInfo.isConnected();
               if(isActive)
                 {
               System.out.print("Connection Establied");
                  }
                else{
                    System.out.print("Connection not Establied");
                     }

答案 3 :(得分:0)

试试这个

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 cd= new ConnectionDetector(context);

   boolean  isInternetPresent = cd.isConnectingToInternet();

如果存在互联网,它将返回true

答案 4 :(得分:0)

我认为在您的情况下此链接可能会对您有所帮助

How can I receive a notification when the device loses network connectivity?

检查互联网连接的最佳方法是发送请求,看看是否有任何回复。