Autore Topic: Verifica connessione internet  (Letto 738 volte)

Offline LinkOut

  • Utente normale
  • ***
  • Post: 270
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Verifica connessione internet
« il: 15 Aprile 2015, 14:00:54 CEST »
0
Per verificare se il telefono è connesso ad internet solitamente si usa qualcosa del genere:

Codice (Java): [Seleziona]
public boolean isInternetConnected(){
        ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity != null){
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null)
                for (int i =0; i< info.length; i++)
                    if (info[i].getState() == NetworkInfo.State.CONNECTED)
                    {
                        return true;
                    }
        }
        return false;
    }

Ci sono problemi? Teoricamente no, praticamente sì.

Case Study:
Telefono connesso ad una rete Wi-Fi che non comunica con l'esterno (per esempio al router ho staccato il cavo).

In questo caso però isInternetConnected(); sarà true, anche se in realtà non è vero.

Quali sono i problemi?
Il problema è che qualunque sia il client utilizzato per le chiamate HTTP esso dovrà andare in timeout prima di accorgersi della mancata connessione di internet.

Come si può ovviare a questo problema?

Grazie per gli eventuali consigli.

Offline LonelyWolf

  • Utente junior
  • **
  • Post: 148
  • Respect: +12
    • Mostra profilo
    • Traversate dei laghi
  • Dispositivo Android:
    GT-I9505, ALE-L21
  • Sistema operativo:
    Windows 7 32/64
Re:Verifica connessione internet
« Risposta #1 il: 15 Aprile 2015, 20:35:24 CEST »
0
Così di getto, però non so se esiste la possibilità con android, un ping e vedi subito se c'è connessione internet.
Se la mia risposta ti è utile, per favore un thanks!

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Verifica connessione internet
« Risposta #2 il: 15 Aprile 2015, 21:24:01 CEST »
0
fare una normale richiesta ad un sito tipo google e vedere se hai risposta entro 2 secondi.
Ok potresti avere una connessione lentissima, però è un metodo

Offline LinkOut

  • Utente normale
  • ***
  • Post: 270
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Verifica connessione internet
« Risposta #3 il: 16 Aprile 2015, 08:26:53 CEST »
0
Ho pensato anche io al Ping, con un timeout basso... Però effettivamente dovrebbe essere la prima cosa che si verifica quando si verifica la connessione o meno ad internet.

Sbaglio?

Offline dalamar1977

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Motoroloa Moto G2
  • Sistema operativo:
    OSX WIN LINUX
Re:Verifica connessione internet
« Risposta #4 il: 28 Maggio 2015, 13:18:55 CEST »
0
un po in ritardo ma:


   
Codice (Java): [Seleziona]
public static boolean hasActiveInternetConnection(Context context) {
    if (isNetworkAvailable(context)) {
        try {
            HttpURLConnection urlDacontrollare = (HttpURLConnection) (new URL("[url=http://www.google.com]Google[/url]").openConnection());
            urlDacontrollare.setRequestProperty("User-Agent", "Test");
            urlDacontrollare.setRequestProperty("Connection", "close");
            urlDacontrollare.setConnectTimeout(2000);
            urlDacontrollare.connect();
            return (urlDacontrollare.getResponseCode() == 200);
        } catch (IOException e) {
            Log.d("CONN", "Error checking internet connection", e);
        }
    } else {
        Log.d("CONN", "No network available!");
    }
    return false;
}