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 ?
Réponses
Trop de publicités?@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.
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.
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();