如何在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复制/粘贴您的响应:)