verificar studio saber network internet hacer esta datos conexion conectado comprobar como check android internet-connection

studio - Cómo comprobar que la conexión a Internet actualmente está disponible o no en Android



network status android studio (12)

Además, tenga en cuenta que a veces el usuario se conectará a una red Wi-Fi, pero esa red puede requerir autenticación basada en el navegador. La mayoría de los hotspots de hoteles y aeropuertos son así, por lo que su aplicación podría ser engañada al pensar que tiene conectividad, y luego cualquier recuperación de URL realmente recuperará la página de inicio de sesión del punto de acceso en lugar de la página que está buscando.

Dependiendo de la importancia de realizar este control, además de verificar la conexión con ConnectivityManager, sugiero incluir un código para verificar que se trata de una conexión a Internet que funcione y no solo una ilusión. Puede hacerlo tratando de obtener una dirección / recurso conocido de su sitio, como una imagen 1x1 PNG o un archivo de texto de 1 byte.

También quiero ejecutar mi aplicación fuera de línea, por lo que debo verificar si actualmente hay una conexión a Internet disponible o no. ¿Alguien puede decirme cómo verificar si internet está disponible o no en Android? Dé el código de muestra. Intenté con el siguiente código y lo comprobé con un emulador, pero no funciona

public boolean isInternetConnection() { ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); return connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting(); }

Gracias


Esto le dirá si está conectado a una red:

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;

Advertencia: si está conectado a una red WiFi que no incluye acceso a Internet o requiere autenticación basada en el navegador, la connected seguirá siendo verdadera.

Necesitarás este permiso en tu manifiesto:

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


Puede intentar establecer una conexión TCP con un host remoto:

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; } }

Entonces:

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


Puedes usar dos métodos:

1 - para la conexión de verificación:

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

2 - para comprobar internet:

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

Agregar permisos para manifestar:

<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" />


Use el método checkConnectivity:

if (checkConnectivity() == 1){ //do something }

Método para verificar tu conectividad:

private int checkConnectivity() { boolean enabled = true; ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = connectivityManager.getActiveNetworkInfo(); if ((info == null || !info.isConnected() || !info.isAvailable())) { internet = 0;//sin conexion Toast.makeText(getApplicationContext(), "Sin conexión a Internet...", Toast.LENGTH_SHORT).show(); enabled = false; } else { internet = 1;//conexión } return internet; }


Use el siguiente código:

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

}

si isNetworkAvailable () devuelve true entonces la conexión a Internet está disponible, de lo contrario la conexión a Internet no está disponible

Aquí debe agregar usos a continuación : Permiso en su aplicación Archivo de manifiesto

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


intente usar 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

También agrega permiso a AndroidManifest.xml

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


usa el siguiente código:

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; } }

recuerda que necesitas poner en tu manifiesto la siguiente línea:

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


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; } }


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>


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

Utilizar esta. Porque el dispositivo no puede estar conectado a Internet, incluso si está conectado a wifi. Wifi no puede estar conectado a Internet


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; } }