266 votes

Vérifiez votre connexion à Internet

Je veux créer une application qui utilise Internet et j'essaie de créer une fonction qui vérifie si une connexion est disponible et si ce n'est pas le cas, passez à une activité qui comporte un bouton de nouvelle tentative et une explication.

Le code ci-joint est attaché jusqu'à présent, mais je reçois l'erreur Syntax error, insert "}" to complete MethodBody.

Maintenant, je les mets à essayer de le faire fonctionner, mais jusqu'à présent, pas de chance ... Toute aide serait appréciée.

 public class TheEvoStikLeagueActivity extends Activity {
    private final int SPLASH_DISPLAY_LENGHT = 3000;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);

        private boolean checkInternetConnection() {
            ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
            // ARE WE CONNECTED TO THE NET
            if (conMgr.getActiveNetworkInfo() != null
                    && conMgr.getActiveNetworkInfo().isAvailable()
                    && conMgr.getActiveNetworkInfo().isConnected()) {

                return true;

                /* New Handler to start the Menu-Activity
                 * and close this Splash-Screen after some seconds.*/
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        /* Create an Intent that will start the Menu-Activity. */
                        Intent mainIntent = new Intent(TheEvoStikLeagueActivity.this, IntroActivity.class);
                        TheEvoStikLeagueActivity.this.startActivity(mainIntent);
                        TheEvoStikLeagueActivity.this.finish();
                    }
                }, SPLASH_DISPLAY_LENGHT);
            } else {
                return false;

                Intent connectionIntent = new Intent(TheEvoStikLeagueActivity.this, HomeActivity.class);
                TheEvoStikLeagueActivity.this.startActivity(connectionIntent);
                TheEvoStikLeagueActivity.this.finish();
            }
        }
    }
 

479voto

Seshu Vinay Points 4609

cette méthode vérifie si le mobile est connecté à Internet et renvoie true si connecté:

 private boolean isNetworkConnected() {
  ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo ni = cm.getActiveNetworkInfo();
  if (ni == null) {
   // There are no active networks.
   return false;
  } else
   return true;
 }
 

en manifeste,

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

Edit: Cette méthode vérifie si le périphérique est connecté à Internet (il est possible qu’il soit connecté à un réseau mais pas à Internet).

 public boolean isInternetAvailable() {
        try {
            InetAddress ipAddr = InetAddress.getByName("google.com"); //You can replace it with your name

            if (ipAddr.equals("")) {
                return false;
            } else {
                return true;
            }

        } catch (Exception e) {
            return false;
        }

    }
 

100voto

Jared Burrows Points 3932

Voici la méthode que j'utilise:

 public static boolean isNetworkAvailable(Context context) 
{
    return ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo() != null;
}
 

Voici comment utiliser la méthode:

 if (isNetworkAvailable(context))
{
    // code here
}
else
{
    // code
}
 

Permission nécessaire:

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

Cordialement,

36voto

Bhargav Jhaveri Points 158

Les méthodes décrites ci-dessus lorsque vous êtes connecté à un réseau Wi-Fi de la source ou par l'intermédiaire de données de téléphone portable packs. Mais dans le cas d'une connexion Wi-Fi il ya des cas où vous sont en outre invités à s'inscrire Dans comme dans un Café. Donc, dans ce cas, votre application ne pourra pas que vous êtes connecté à un réseau Wi-Fi de la source, mais pas avec l'Internet.

Cette méthode fonctionne très bien.

    public static boolean isConnected(Context context) {
        ConnectivityManager cm = (ConnectivityManager)context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork != null && activeNetwork.isConnected()) {
        try {
            URL url = new URL("http://www.google.com/");
            HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
            urlc.setRequestProperty("User-Agent", "test");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(1000); // mTimeout is in seconds
            urlc.connect();
            if (urlc.getResponseCode() == 200) {
                return true;
            } else {
                return false;
            }
        } catch (IOException e) {
            Log.i("warning", "Error checking internet connection", e);
            return false;
        }
    }

    return false;

}

Veuillez l'utiliser dans un thread séparé depuis le thread principal, car il fait un appel du réseau et va jeter NetwrokOnMainThreadException si pas de suivi.

Et aussi ne pas mettre cette méthode à l'intérieur d'onCreate ou toute autre méthode. Mettre à l'intérieur d'une classe et d'accès.

14voto

MByD Points 78505

Vous ne pouvez pas créer de méthode dans une autre méthode, déplacez private boolean checkInternetConnection() { méthode hors de onCreate

5voto

Praful Bhatnagar Points 4628

Essayez le code suivant :

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