检查Gprs连接

时间:2011-02-17 10:46:07

标签: java android networking gprs

我想通过代码显示检查gprs连接是否在android中是否处于活动状态 我该怎么检查呢 我有以下代码。 它会起作用吗?

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;
}

我可以用谷歌替换该网站吗? 并检查回复。

5 个答案:

答案 0 :(得分: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;
    }       

}

答案 1 :(得分:1)

  

我可以用谷歌替换该网站并检查回复。

,并将https替换为http,无需HIT页面并获得回复。

只需制作HEAD

  

HEAD方法与GET相同,只是服务器不能在响应中返回消息体。响应HEAD请求的HTTP头中包含的元信息应该与响应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;
    }
  }  

答案 2 :(得分: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

来专门检查WIFI或GPRS
 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分别表示移动和wifi连接

答案 3 :(得分:0)

如果您正在测试移动连接,可以查看是否;

NetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE

在代码中从cm.getActiveNetworkInfo()返回的对象上。如果连接是移动连接,则返回true。

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

答案 4 :(得分:0)

  API中不推荐使用

getNetworkInfo(ConnectivityManager.TYPE_WIFI)   等级23

对于android> = API LEVEL 23使用:

public boolean isMobileDataNetworkConnected(Context context) {

    ConnectivityManager connectivityManager = (ConnectivityManager) 
            context.getSystemService(Context.CONNECTIVITY_SERVICE);

    for (Network network : connectivityManager.getAllNetworks()) {
        NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);

        int networkType = networkInfo.getType();

        if (networkType == ConnectivityManager.TYPE_MOBILE || 
            networkType == ConnectivityManager.TYPE_MOBILE_DUN &&
            networkInfo.isConnected()) {

            return true;
        }
    }
    return false;
}