Aquí, mi dispositivo Android admite wifi y 3G. En un momento determinado, qué red está disponible en este dispositivo. Debido a que mi requisito es cuando 3g está disponible, tengo que cargar una pequeña cantidad de datos. cuando wifi está disponible, hay que cargar toda la información. Entonces, tengo que verificar que la conexión sea wifi o 3g. Por favor, ayúdame. Gracias por adelantado.cómo comprobar la red wifi o 3g está disponible en el dispositivo Android
Respuesta
utilizo este:
/**
* Checks if we have a valid Internet Connection on the device.
* @param ctx
* @return True if device has internet
*
* Code from: http://www.androidsnippets.org/snippets/131/
*/
public static boolean haveInternet(Context ctx) {
NetworkInfo info = (NetworkInfo) ((ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null || !info.isConnected()) {
return false;
}
if (info.isRoaming()) {
// here is the roaming option you can change it if you want to
// disable internet while roaming, just return false
return false;
}
return true;
}
También es necesario
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
en AndroidMainfest.xml
para obtener el tipo de red puede utilizar este fragmento de código:
ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
//mobile
State mobile = conMan.getNetworkInfo(0).getState();
//wifi
State wifi = conMan.getNetworkInfo(1).getState();
y luego usarlo como esa:
if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) {
//mobile
} else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
//wifi
}
para obtener el tipo de la red móvil Me gustaría probar TelephonyManager#getNetworkType o NetworkInfo#getSubtypeName
Este código me da error cuando uso esto en una tableta sin sim. –
Es necesario añadir a continuación el permiso en el archivo de manifiesto de Android:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Después de eso, puede utilizar a continuación las funciones para comprobar wifi o la red móvil está conectada o no
public static boolean isWifiConnected(Context context) {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return ((netInfo != null) && netInfo.isConnected());
}
public static boolean isMobileConnected(Context context) {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
return ((netInfo != null) && netInfo.isConnected());
}
Algunas referencias de developer.android.com son:
En primer lugar obtener una referencia a la ConnectivityManager y luego check the Wifi and 3G status del dispositivo. Necesitará el permiso ACCESS_NETWORK_STATE para usar este servicio.
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mWifi.isAvailable() == true) {
return "Connected to WiFi";
} else if (mMobile.isAvailable() == true) {
return "Connected to Mobile Network";
} else return "No internet Connection"
Puede utilizar este método para comprobar si su conexión a Internet es 2G, 3G o 4G:
public String getNetworkClass(Context context) {
TelephonyManager mTelephonyManager = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
int networkType = mTelephonyManager.getNetworkType();
switch (networkType) {
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
return "2G";
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
return "3G";
case TelephonyManager.NETWORK_TYPE_LTE:
return "4G";
default:
return "Unknown";
}
}
Y el uso siguiente método se puede comprobar si Internet está disponible o no, y obtenga si está accediendo a Internet a través de una red móvil o WiFi:
public String getNetworkType(Context context){
String networkType = null;
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
if (activeNetwork != null) { // connected to the internet
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
networkType = "WiFi";
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
networkType = "Mobile";
}
} else {
// not connected to the internet
}
return networkType;
}
- 1. Detectar Restauración de red 3G o Wifi
- 2. Cómo comprobar si 3g está activo o no en android
- 3. ¿Cómo comprobar si internet está disponible o no en el inicio de la aplicación en android?
- 4. En iOS, ¿cómo detectar desde Javascript (web) el dispositivo está conectado a través de 3G o Wifi?
- 5. Cómo comprobar o desactivar la conexión de red en WIFI y 3G (plan de datos) en dispositivos móviles?
- 6. Cómo comprobar si la opción wifi está habilitada o no
- 7. ¿Comprobar WiFi y GPS está conectado o no en Android?
- 8. Android WIFI Cómo detectar cuando la conexión WIFI específica está disponible
- 9. ¿Cómo realizar un seguimiento del tráfico de red en 3G/wifi en un dispositivo con iOS?
- 10. Habilite simultáneamente la interfaz wifi y 3G en Android
- 11. iPhone activa el tipo de red (2G, 3G, WiFi)
- 12. ¿Pueden funcionar wifi y 3G al mismo tiempo en Android?
- 13. BroadcastReceiver cuando el estado de la red wifi o 3g cambió
- 14. Android: conmutador 3G a WIFI mientras está en el medio de la aplicación = pérdida de conectividad de red
- 15. Android :: ¿Cómo desconectarse de una red wifi?
- 16. cómo probar la velocidad de descarga y carga wifi/3g?
- 17. Android: ¿Cómo comprobar si el servidor está disponible?
- 18. ¿Cómo forzar una conexión GPRS en lugar de 3G o Wifi?
- 19. ¿Cómo deshabilitar/habilitar la red, cambiar a WiFi en el emulador de Android?
- 20. ¿Cómo lidiar con PurgeIdleCellConnections en la red 3G?
- 21. Excepción lectura Wifi/Estado 3G
- 22. ¿Cómo comprobar si NFC está habilitado o no en Android?
- 23. Para comprobar si la sesión está disponible o no
- 24. ¿Cómo apagar programáticamente WiFi en un dispositivo Android?
- 25. Android comprobar la disponibilidad de GPS en el dispositivo
- 26. ¿Detecta la dirección IP wifi en Android?
- 27. Cómo determinar si el usuario está en Edge o 3G en iPhone
- 28. ¿Cómo puedo saber si mi iPhone/iPad está conectado a 2G o 3G?
- 29. ¿Es posible forzar el tráfico de red a través de Wifi o la red TMobile?
- 30. La información de red de Android siempre devuelve verdadero incluso si Internet no está disponible
@govardhan: +1 También tengo este problema. ¿Recibiste alguna respuesta? – Praveen
Eche un vistazo a eso http://stackoverflow.com/questions/2789612/how-can-i-check-whether-an-android-device-is-connected-to-the-web http://stackoverflow.com/questions/3119607/how-to-be-notify-on-wifi-network-status-change http://stackoverflow.com/questions/3211978/how-to-check-internet-connectivity-in-android http://stackoverflow.com/questions/2919414/get-network-type http://stackoverflow.com/search?q = ConnectivityManager – Fedor
Este enlace contiene el código que necesita http://stackoverflow.com/a/9256972/191246. – ccpizza