如何在Android上检查我的互联网接入?

如何在Android上检查我的互联网接入?,android,Android,我真正想要的是,当用户没有连接时,我想显示一些对话框,说明他或她没有连接 我试着把这个放在我的主要活动上,但仍然没有成功 public boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); return cm.getActiveNetworkInfo().isConnectedOrConnecting(); }

我真正想要的是,当用户没有连接时,我想显示一些对话框,说明他或她没有连接

我试着把这个放在我的主要活动上,但仍然没有成功

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

}
我也用过这个,但也没用:

public class ConnectionChangeReceiver extends BroadcastReceiver
    {
      @Override
      public void onReceive( Context context, Intent intent )
      {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService( Context.CONNECTIVITY_SERVICE );
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
        NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(     ConnectivityManager.TYPE_MOBILE );
        if ( activeNetInfo != null )
        {
          Toast.makeText( context, "Active Network Type : " + activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();
        }
        if( mobNetInfo != null )
        {
          Toast.makeText( context, "Mobile Network Type : " + mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();
        }
      }
    }
我在舱单上加了这个:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<receiver android:enabled="true" android:name="com.project.mobile.controller.comm.ConnectivityReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
    </intent-filter>
</receiver>

如果有人能告诉我我做错了什么,我会非常感激。提前谢谢

    public static boolean haveInternet(Context ctx) {
         NetworkInfo info = (NetworkInfo) ((ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
         if (info == null || !info.isConnected()) {
            return false;
         }
         return true;
    }
如果布尔方法返回true,则存在Internet连接。如果返回false,则没有连接

if(haveInternet(ActivityName.this)==true){
   //Some code
}else{
   Toast.makeText(ActivityName.this,"No Internet Connection",      Toast.LENGTH_SHORT).show();  
 }

另请参见此以获取进一步帮助

u可以在ConnectionManager类的帮助下检查您的内部连接。 我已经给出了一个可以在代码中使用的函数

 public static boolean
 CheckInternet(Context context)      {
         ConnectivityManager connec =(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

        android.net.NetworkInfo wifi = > connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        android.net.NetworkInfo mobile =connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
如果wifi和移动网络的条件检查可用,请在此进行 或者不是。如果其中任何一个可用或连接,那么它将 返回true,否则返回false

 if (wifi.isConnected()) {          
return true;        
} else if
 (!mobile.isConnected()) 
{           
return false;       
} else if
 (mobile.isConnected())
 {          
return true;        
} return false;
}
使用此功能后,只需检查以下条件

 if (CheckInternet(getBaseContext())) 
 {   
 //connection successfull 

 }  else 

{ Toast.makeText(getBaseContext(),"Please Check InternetConnectionToast.LENGTH_LONG).show(); 
}

享受

也许此链接可以进一步帮助您:

您可以在活动中跳过mentined CommunicationManager代码,或者更好,如果您需要从更多活动进行访问,您还可以在应用程序Singletin实例中将该类声明为static,并从那里调用它,如所述

您还需要在应用程序清单中注册BroadcastReceiver:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<receiver android:enabled="true" android:name="com.project.mobile.controller.comm.ConnectivityReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
    </intent-filter>
</receiver>

享受

只需使用此方法

private boolean isNetworkConnected(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo network = cm.getActiveNetworkInfo();
        if (network != null) {
            return network.isAvailable();
        }
        return false;
    }

当您连接到Wi-Fi源或通过手机数据包时,上述方法有效。但在使用Wi-Fi连接的情况下,有时会进一步要求您登录,就像在咖啡馆一样。因此,在这种情况下,您的应用程序将失败,因为您已连接到Wi-Fi源,但未连接到Internet

这种方法效果很好

public static boolean isConnected(Context context) {
    ConnectivityManager cm = (ConnectivityManager)context
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork != null && activeNetwork.isConnected()) {
        try {
            URL url = new URL("http://www.google.com/");
            HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
            urlc.setRequestProperty("User-Agent", "test");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(1000); // mTimeout is in seconds
            urlc.connect();
            if (urlc.getResponseCode() == 200) {
                return true;
            } else {
                return false;
            }
        } catch (IOException e) {
            Log.i("warning", "Error checking internet connection", e);
            return false;
        }
    }

    return false;

}

请在主线程之外的单独线程中使用此选项,因为它会进行网络调用,如果不遵循此选项,将抛出NetworkMainThreadException。

我是否应该将其放在我的主活动中?是的,您可以将其放在您的活动中。但传统的方法是使用一个全局类,比如internetUtil,然后在代码中的任何地方使用后粘贴到那里。是的,你可以把它放在你的活动中。你明白了吗?我应该在我的活动中跳过它吗?是的,你可以粘贴到你的活动中。。。但是如果您在所有活动中都需要它,那么您必须为此创建一个类,并将此函数粘贴到其中。。或者创建一个类,并在其中将上述函数设置为静态函数。。。因此,您可以使用类名调用它,只需传递当前活动的上下文……@chirag:seekens@milind复制/粘贴您的响应:)