737 votes

Détecter s'il existe une connexion Internet disponible sur Android

Double Possible:
Comment vérifier l'accès à internet sur Android? InetAddress jamais délais d'attente

J'ai besoin de détecter si l'appareil Android est connecté à Internet.

L' NetworkInfo classe fournit une non-méthode statique isAvailable() qui semble parfait.

Le problème est que:

NetworkInfo ni = new NetworkInfo();
if (!ni.isAvailable()) {
    // do something
}

met cette erreur:

The constructor NetworkInfo is not visible.

Pari sûr est qu'il existe une autre classe qui retourne un NetworkInfo objet. Mais je ne sais pas qui.

  1. Comment faire pour obtenir l'extrait ci-dessus du code de travail?
  2. Comment pourrais-je me suis trouvé les informations dont j'avais besoin dans la documentation en ligne?
  3. Pouvez-vous suggérer une meilleure façon pour que ce type de détection?

1484voto

Alexandre Jasmin Points 18067

L' getActiveNetworkInfo() méthode de ConnectivityManager renvoie un NetworkInfo instance représentant la première connexion de l'interface réseau, il peut se trouver ou null si aucun si les interfaces sont connectées. Vérifier si cette méthode renvoie null devrait être assez pour dire si une connexion internet est disponible.

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

Vous aurez également besoin de:

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

dans votre manifeste android.

Edit:

Notez que le fait d'avoir une interface réseau active ne garantit pas qu'un service en réseau est disponible. Les réseaux de questions, le temps d'arrêt du serveur, signal faible, des portails captifs, les filtres de contenu et la comme peut tout empêcher votre application à partir d'une connexion à un serveur. Par exemple, vous ne pouvez pas dire à coup sûr si votre application peut atteindre Twitter jusqu'à ce que vous recevez une réponse valide à partir du service Twitter.

258voto

Squonk Points 28943

J’ai vérifier comme suit pour Wi-fi et internet Mobile...

Évidemment, il peut facilement être modifié pour vérifier les types de connexion spécifiques individuels, par exemple, si votre application a besoin de vitesses potentiellement supérieures du Wi-fi fonctionne correctement, etc..

79voto

Vivek Parihar Points 939

Étape 1 : Créer une classe AppStatus dans votre projet (vous pouvez donner un autre nom aussi). Alors s’il vous plaît collez les lignes ci-dessous dans votre code :

Étape 2 : Maintenant pour vérifier si le périphérique dispose d’une connectivité réseau puis il suffit d’ajouter cet extrait de code où que vous voulez vérifier...

14voto

Octavian Damiean Points 20620

Aussi une autre remarque importante. Vous devez définir android.permission.ACCESS_NETWORK_STATE dans votre AndroidManifest.xml pour que cela fonctionne.

_ comment pourrais-je me suis trouvé les informations dont j'avais besoin dans la documentation en ligne?

Vous avez juste à lire la documentation des classes correctement et vous trouverez toutes les réponses que vous cherchez. Consultez la documentation sur ConnectivityManager. La description indique quoi faire.

11voto

axllaruse Points 61

Le getActiveNetworkInfo() la méthode de ConnectivityManager renvoie une NetworkInfo instance représentant le premier réseau connecté interface il peut trouver ou null si aucune si les interfaces sont connectées. Vérifier si cette méthode renvoie null devrait être assez pour dire si un la connexion internet est disponible.

private boolean isNetworkAvailable() {
     ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
     return activeNetworkInfo != null; 
}

Vous aurez également besoin de:

dans votre manifeste android.

Edit:

Notez que le fait d'avoir une interface réseau active ne garantit pas qu'un notamment service en réseau est disponible. Les réseaux de questions, serveur les temps d'arrêt, signal faible, des portails captifs, les filtres de contenu et la comme peut tout empêcher votre application à partir d'une connexion à un serveur. Par exemple, vous ne pouvez pas dire à coup sûr si votre application peut atteindre Twitter jusqu'à ce que vous recevez un réponse valide à partir du service Twitter.

getActiveNetworkInfo() ne devraient pas ne jamais donner la valeur null. Je ne sais pas ce qu'ils avaient en tête lorsqu'ils sont venus avec. Il devrait vous donner un objet toujours.

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