2011-02-17 86 views
1

我想检查gprs连接是否活动或不在android通过代码显示 我该如何检查。 我有以下代码。 它会工作吗?检查GPRS连接

public static boolean isOnline(Context context) { 
try { 
ConnectivityManager cm = (ConnectivityManager) context 
.getSystemService(Context.CONNECTIVITY_SERVICE); 
if (cm.getActiveNetworkInfo().isConnectedOrConnecting()) { 
URL url = new URL("https://telemeter4tools.services.telenet.be/TelemeterService"); 
HttpURLConnection urlc = (HttpURLConnection) url 
.openConnection(); 
urlc.setRequestProperty("User-Agent", "My Android Demo"); 
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) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
return false; 
} 

我可以使用google 替换该网站并检查响应。

回答

1

我可以使用google替换该网站并检查响应。

,并与http,无需命中页面并得到响应更换https

只是要HEAD

HEAD方法是相同,除了在应答服务器不能返回一个消息体得到的。 HTTP头中包含的对HEAD请求作出响应的元信息应该与为响应GET请求而发送的信息相同。此方法可用于获取有关请求隐含的实体的元信息,而无需传递实体主体本身。此方法通常用于测试超文本链接的有效性,可访问性和最近的修改。

对HEAD请求的响应可能是可缓存的,因为响应中包含的信息可能用于从该资源更新先前缓存的实体。如果新字段值指示缓存实体与当前实体不同(如将通过Content-Length,Content-MD5,ETag或Last-Modified中的更改所指示的那样),则缓存必须将缓存条目视为陈旧。

public static boolean isGPRSWorking(String URL){ 
    try { 
     HttpURLConnection.setFollowRedirects(false); 

     HttpURLConnection con = 
     (HttpURLConnection) new URL(URLName).openConnection(); 
     con.setRequestMethod("HEAD"); 
     return (con.getResponseCode() == HttpURLConnection.HTTP_OK); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 
    } 
0

使用这种简单的方法来检查连接

public boolean isOnline() 
{ 

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo ni = cm.getActiveNetworkInfo(); 
    boolean result = false; 
    if(ni != null) 
    { 
     if( ni.getState() == NetworkInfo.State.CONNECTED) 
     { 
      result = true; 
     } 
    } 

    return result; 


} 

利用这个我们可以检查连接到设备的任何网络。您可以通过指定additionaly

ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    // ARE WE CONNECTED TO THE NET 
if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || 
    connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) 

其中0和1分别指的是移动和无线连接

0

如果你的,如果你可以看到一个移动连接测试专门检查Wi-Fi或GPRS;

NetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE

的对象

从cm.getActiveNetworkInfo()在你的代码返回。如果连接是移动连接,这将返回true。

对GPRS的测试并没有什么意义,因为并非所有的移动设备都支持GPRS协议,并且很多可以使用其他蜂窝协议(CDMA,HSDPA等)。

3
Check below code: 

public boolean checkNetworkStatus() { 

    final ConnectivityManager connMgr = (ConnectivityManager) this 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 

    final android.net.NetworkInfo wifi = connMgr 
      .getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    final android.net.NetworkInfo mobile = connMgr 
      .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

    if (wifi.isAvailable()) { 
     Toast.makeText(this, "Wifi connection.", Toast.LENGTH_LONG).show(); 
     return true; 

    } else if (mobile.isAvailable()) { 
     Toast.makeText(this, "GPRS connection.", Toast.LENGTH_LONG).show(); 
     return true; 

    } else { 
     Toast.makeText(this, "No network connection.", Toast.LENGTH_LONG).show(); 
     return false; 
    }  

}