Android: Cómo detectar si un dispositivo es WiFi o WiFi + Celular
¿Hay una manera de comprobar si el usuario está utilizando un dispositivo (esto se aplica principalmente a las tabletas) con conexión celular ?. Es decir, los teléfonos inteligentes viene con built-in Wi-Fi y Cellular (en general), pero algunas tabletas sólo viene con Wi-Fi. ¿Cómo puedo saber qué tipo de dispositivo está ejecutando mi aplicación?
He intentado lo siguiente sin resultados:
- RRC estado de un androide
- Cómo hacer juego multijugador
- Volley Android, cómo pasar post parámetros de forma dinámica
- Android Cómo calcular el uso de la red de paquetes / datos
- ¿Cómo detectar si el sistema está conectado a wifi ad hoc o de infraestructura?
cell = ConnectivityManager.isNetworkTypeValid(ConnectivityManager.TYPE_MOBILE); wifi = ConnectivityManager.isNetworkTypeValid(ConnectivityManager.TYPE_WIFI); if (cell) tv_1.setText("The tablet has cellular"); else tv_1.setText("The tablet does not have cellular"); if (wifi) tv_2.setText("The tablet has wifi"); else tv_2.setText("The tablet does not have wifi");
El problema es que ambas comparaciones siempre devuelven true, incluso si se trata de una tableta que no tiene celular.
Sólo necesito saber si el dispositivo tiene una ranura para tarjeta SIM (modelo con celular) o es un modelo que sólo tiene WiFi, ¿es eso posible?
Gracias por adelantado.
- Android 6.0.1 forzar la conexión wifi sin acceso a Internet
- Solución rápida para NetworkOnMainThreadException
- Red inalámbrica Wi-Fi de Android
- Aplicación de Android Dispositivo Wi-Fi - Conectividad AP
- Programación de juegos multijugador
- Android: Leer el HTML de una página web en una cadena
Aquí hay un extracto de mi código (funciona hasta ahora):
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); NetworkInfo mEthernet = connManager.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET); NetworkInfo m3G = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (mWifi!=null) isOnWifi = mWifi.isConnected(); if (mEthernet!=null) isOnEthernet = mEthernet.isConnected(); if (m3G!=null) is3G = m3G.isConnected();
Si el objetivo es determinar si la conexión se mide, debe llamar a ConnectivityManager.isActiveNetworkMetered () , o si se requiere soporte para dispositivos antiguos, ConnectivityManagerCompat.isActiveNetworkMetered () .
Para obtener más información sobre cómo reaccionar a diversos tipos de conexión, consulte Administración de uso de la red (aunque tenga en cuenta el problema de la documentación de no utilizar isActiveNetworkMetered () ).