Проверьте соединение Gprs - PullRequest
1 голос
/ 17 февраля 2011

Я хочу проверить, активно ли соединение 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;
}

Могу ли я заменить этот сайт Google и проверить ответ.

Ответы [ 5 ]

3 голосов
/ 12 октября 2011
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 голос
/ 17 февраля 2011

Могу ли я заменить этот сайт на Google и проверить ответ.

да , а также замените https на http и не нужно заходить на страницу и получать ответ.

Просто сделай ГОЛОВА

Метод HEAD идентичен GET, за исключением того, что сервер НЕ ДОЛЖЕН возвращать тело сообщения в ответе. Метаинформация, содержащаяся в заголовках 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 голосов
/ 28 марта 2018

getNetworkInfo(ConnectivityManager.TYPE_WIFI) устарело на уровне API 23

Для Android> = API УРОВЕНЬ 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;
}
0 голосов
/ 17 февраля 2011

Если вы тестируете мобильную связь, вы можете увидеть, если;

NetworkInfo.getType () == ConnectivityManager.TYPE_MOBILE

для объекта, возвращенного из cm.getActiveNetworkInfo () в вашем коде. Это вернет true, если соединение мобильное.

Тестирование GPRS специально не имеет смысла, потому что не все мобильные устройства поддерживают протокол GPRS, и многие могут использовать другие сотовые протоколы (CDMA, HSDPA и т. Д.).

0 голосов
/ 17 февраля 2011

Используйте этот простой метод для проверки подключения

 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;


} 

С помощью этого мы можем проверить любую сеть, подключенную к устройству.Вы можете специально проверить 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 соответственно относятся к мобильному и Wi-Fi соединению

...