701 votes

Comment faire pour vérifier l’accès à internet sur Android ? InetAddress jamais de délais d’attente...

J’ai eu une qui est censé pour vérifier l’accès au réseau à un nom d’hôte. Mais la n’est jamais dépassé. Quelqu'un a une idée ?

1040voto

gar Points 6118

@Eddie. Juste une modification mineure à votre solution - si l'appareil est en mode avion (ou sans doute dans d'autres situations où il n'y a pas de réseau disponible), cm.getActiveNetworkInfo() sera nulle, si vous avez besoin d'ajouter une valeur null vérifier.

Modifié solution ci-dessous:

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }
    return false;
}

Également ajouter l'autorisation suivante à l'Manifeste Android

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Un autre petit point, si vous avez absolument besoin d'une connexion réseau au moment donné dans le temps, alors il peut être préférable d'utiliser netInfo.isConnected() plutôt que d' netInfo.isConnectedOrConnecting. Je suppose que c'est à l'individuel de cas d'utilisation.

297voto

Eddie Points 4270

Pas besoin d’être complexe. La façon la plus simple et cadre consiste à utiliser `` permission et faites juste une méthode connectée

Vous pouvez également utiliser `` si vous avez un type particulier de hôte et connexion (wifi/mobile) en tête.

Vous aurez également besoin :

dans votre manifeste d’android.

64voto

azelez Points 1081

Pour obtenir `` fonctionne, vous devez ajouter ce qui suit au manifeste.

48voto

Chinmay Kanchi Points 16353

Jetez un oeil à la ConnectivityManager classe. Vous pouvez utiliser cette classe pour obtenir des informations sur les connexions actives sur un ordinateur hôte. http://developer.android.com/reference/android/net/ConnectivityManager.html

EDIT: Vous pouvez utiliser

Context.getSystemService(Context.CONNECTIVITY_SERVICE)
    .getNetworkInfo(ConnectivityManager.TYPE_MOBILE) 

ou

Context.getSystemService(Context.CONNECTIVITY_SERVICE)
    .getNetworkInfo(ConnectivityManager.TYPE_WIFI) 

et d'analyser les DetailedState enum de retour de la NetworkInfo objet

EDIT EDIT: Pour savoir si vous pouvez accéder à un ordinateur hôte, vous pouvez utiliser

Context.getSystemService(Context.CONNECTIVITY_SERVICE)
    .requestRouteToHost(TYPE_WIFI, int hostAddress)

Évidemment, je suis en utilisant le Contexte.getSystemService(Context.CONNECTIVITY_SERVICE) en tant que proxy pour dire

ConnectivityManager cm = Context.getSystemService(Context.CONNECTIVITY_SERVICE);
cm.yourMethodCallHere();

47voto

Gilbou Points 1343

Vérifiez ce code... cela a fonctionné pour moi  :)

Ensuite, je définis le gestionnaire :

.. .et lancer le test :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X