web-dev-qa-db-fra.com

Comment vérifier actuellement la connexion Internet est disponible ou non dans Android

Je souhaite également exécuter mon application hors connexion. Je dois donc vérifier si une connexion Internet est actuellement disponible ou non. Quelqu'un peut-il me dire comment vérifier si Internet est disponible ou non dans Android? Donnez un exemple de code. J'ai essayé avec le code ci-dessous et vérifié en utilisant un émulateur mais ça ne fonctionne pas

public  boolean isInternetConnection() 
{ 

    ConnectivityManager connectivityManager =  (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    return connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting(); 
} 

Merci

32
mohan

Cela vous dira si vous êtes connecté à un réseau:

boolean connected = false;
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED || 
            connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
        //we are connected to a network
        connected = true;
    }
    else
        connected = false;

Avertissement: Si vous êtes connecté à un réseau WiFi ne disposant pas d'un accès à Internet ou nécessitant une authentification basée sur un navigateur, connected sera toujours vrai.

Vous aurez besoin de cette permission dans votre manifeste:

<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
56
binnyb

Sachez également que, parfois, l'utilisateur sera connecté à un réseau Wi-Fi, mais que ce réseau peut nécessiter une authentification basée sur un navigateur. C'est ce qui se passe dans la plupart des points chauds d'aéroports et d'hôtels, de sorte que votre application risque de croire que vous disposez d'une connectivité. Ainsi, toute récupération d'URL récupérera la page de connexion du point d'accès au lieu de la page recherchée.

En fonction de l'importance de cette vérification, en plus de vérifier la connexion avec ConnectivityManager, je suggérerais d'inclure du code pour vérifier qu'il s'agit d'une connexion Internet opérationnelle et non d'une illusion. Vous pouvez le faire en essayant de récupérer une adresse/ressource connue sur votre site, telle qu'une image PNG 1x1 ou un fichier texte à 1 octet.

14
Bruno Oliveira

Utiliser le code ci-dessous:

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

si isNetworkAvailable () renvoie true, une connexion Internet est disponible, sinon la connexion Internet n'est pas disponible.

Ici besoin d'ajouter ci-dessous utilise-Permission dans votre application Manifeste fichier

<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
9
sandeepmaaram

Vous pouvez utiliser deux méthodes:

1 - pour vérifier la connexion:

   private boolean isNetworkConnected() {
        ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
        return cm.getActiveNetworkInfo() != null;
    }

2 - pour chèque internet:

  public boolean internetIsConnected() {
        try {
            String command = "ping -c 1 google.com";
            return (Runtime.getRuntime().exec(command).waitFor() == 0);
        } catch (Exception e) {
            return false;
        }
    }

Ajouter des autorisations pour manifester: 

 <uses-permission Android:name="Android.permission.INTERNET" />
 <uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />
3
Masoud Siahkali

Vous pouvez simplement essayer d’établir une connexion TCP à un hôte distant:

public boolean hostAvailable(String Host, int port) {
  try (Socket socket = new Socket()) {
    socket.connect(new InetSocketAddress(Host, port), 2000);
    return true;
  } catch (IOException e) {
    // Either we have a timeout or unreachable Host or failed DNS lookup
    System.out.println(e);
    return false;
  }
}

Ensuite:

boolean online = hostAvailable("www.google.com", 80);
2
Xiv

utilisez le code suivant:

public static boolean isNetworkAvaliable(Context ctx) {
    ConnectivityManager connectivityManager = (ConnectivityManager) ctx
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if ((connectivityManager
            .getNetworkInfo(ConnectivityManager.TYPE_MOBILE) != null && connectivityManager
            .getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED)
            || (connectivityManager
                    .getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null && connectivityManager
                    .getNetworkInfo(ConnectivityManager.TYPE_WIFI)
                    .getState() == NetworkInfo.State.CONNECTED)) {
        return true;
    } else {
        return false;
    }
}

n'oubliez pas que vous devez indiquer dans votre manifeste la ligne suivante:

<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
1
user2009158
  public  boolean isInternetConnection()
    {
        ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
                connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
            //we are connected to a network
            return  true;
        }
        else {
            return false;
        }
    }
1
Ahmed Sayed

Utilisez la méthode checkConnectivity:

  if (checkConnectivity()){
    //do something 

    }

Méthode pour vérifier votre connectivité:

private boolean checkConnectivity() {
        boolean enabled = true;

        ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = connectivityManager.getActiveNetworkInfo();

        if ((info == null || !info.isConnected() || !info.isAvailable())) {
                            Toast.makeText(getApplicationContext(), "Sin conexión a Internet...", Toast.LENGTH_SHORT).show();
            return false;
        } else {
            return true;
        }

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

Utilisez ceci. Parce que l'appareil peut ne pas être connecté à Internet même s'il est connecté au wifi. Wifi peut être pas connecté à Internet

0
Samir Elekberov
package com.base64;

import Android.content.Context;
import Android.graphics.Bitmap;
import Android.graphics.BitmapFactory;
import Android.net.ConnectivityManager;
import Android.net.NetworkInfo;
import Android.support.v7.app.AppCompatActivity;
import Android.os.Bundle;
import Android.util.Base64;
import Android.widget.ImageView;
import Android.widget.Toast;

import com.androidquery.AQuery;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if(isConnectingToInternet(MainActivity.this))
        {
            Toast.makeText(getApplicationContext(),"internet is available",Toast.LENGTH_LONG).show();
        }
        else {
            System.out.print("internet is not available");
        }
    }

    public static boolean isConnectingToInternet(Context context)
    {
        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;
    }
}

/*  manifest */

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.base64">

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

    <application
        Android:allowBackup="true"
        Android:icon="@mipmap/ic_launcher"
        Android:label="@string/app_name"
        Android:supportsRtl="true"
        Android:theme="@style/AppTheme">
        <activity Android:name=".MainActivity">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
0
hardip

essayez d'utiliser ConnectivityManager 

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

Ajoutez également l'autorisation à AndroidManifest.xml

<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
0
Amol Desai

Utiliser le service ConnectivityManager

Source Lien 

...
...
import Android.net.ConnectivityManager;
....
....
public class Utils {

   static ConnectivityManager connectivityManager;
   ....
   ....

    public static String isOnline(Context context) {
        JSONArray array = new JSONArray();
        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject.put("connected","false");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        try {
            connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);

            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
            Log.i("networkInfo", networkInfo.toString());
            jsonObject.put("connected",(networkInfo != null && networkInfo.isAvailable() &&
                    networkInfo.isConnected()));
            jsonObject.put("isAvailable",(networkInfo.isAvailable()));
            jsonObject.put("isConnected",(networkInfo.isConnected()));
            jsonObject.put("typeName",(networkInfo.getTypeName()));
            array.put(jsonObject);
            return array.toString();


        } catch (Exception e) {
            System.out.println("CheckConnectivity Exception: " + e.getMessage());
            Log.v("connectivity", e.toString());
        }
        array.put(jsonObject);
        return array.toString();
    }

}
0
Code Spy
public static   boolean isInternetConnection(Context mContext)
{
    ConnectivityManager connectivityManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
    if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
            connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
        //we are connected to a network
        return  true;
    }
    else {
        return false;
    }
}
0
Ahmed Sayed