Android: Fuerza los datos que se envían a través de radio vs WiFi
¿Es posible obligar a una aplicación de Android a utilizar sólo la conexión de radio móvil (3g / 4g / etc), lo que impide el uso de WiFi?
Creo que quiero usar una conexión HIPRI: (ex: WIFI activado, use HIPRI 3G): http://groups.google.com/group/android-developers/browse_thread/thread/d41f85505484d29b
- Creación de un registro WiFi NDEF utilizando application / vnd.wfa.wsc en Android
- La aplicación nunca recibe RSSI_CHANGED_ACTION
- Android: 3G a WIFI cambiar mientras que en el medio en la app = pérdida de conectividad de red
- Forzar Android a usar 3G cuando en el área local wifi sin acceso a la red
- ¿Puedo obtener la dirección IP del punto de acceso a Estoy conectado a través de wifi?
- Android 6.0 comprueba si está conectado a una red Wi-Fi (sin Internet)
- Android y WiFi Direct - Problemas de conexión
- Instalación / Acceso a Certs para VPN / WIFI mediante programación en Android
- Iniciar Androids WiFi-Manager mediante el envío de una intención?
- Android Wifi Direct detecta a sus compañeros pero Peer List es emty
- Conéctese a una red wifi protegida con contraseña usando el shell de adb
- Error de autenticación Wifi en Android
- Cómo conectarse a WPA_EAP WIFI en Android con API 4.3
No creo que puedas "forzar" el camino de la conexión sin apagar explícitamente la radio Wi-Fi temporalmente (no se recomienda). Sin embargo, puede intentar establecer la preferencia de red durante el período en el que desea que esto ocurra:
ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); //Prefer mobile over wifi cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); //Do your work //Remove your preference cm.setNetworkPreference(ConnectivityManager.DEFAULT_NETWORK_PREFERENCE);
¡Espero que ayude!
En Android 2.2 puede utilizar datos móviles de alta prioridad al mismo tiempo que WiFi. El valor del parámetro "feature" es "enableHIPRI" y está oculto en la API del teléfono.
Método: ConnectivityManager.startUsingNetworkFeature (int networkType, String feature) de http://developer.android.com/reference/android/net/ConnectivityManager.html
Fuente: http://code.google.com/p/android/issues/detail?id=5885
Puedes consultar esta otra respuesta: https://stackoverflow.com/a/4756630/327011
Esto NO es una buena política … usarlo si realmente se necesita!
(Yo respondí esta misma pregunta aquí )
No puede forzar explícitamente el canal de comunicaciones por aplicación (puede solicitar utilizar un modo preferido a través de ConnectivityManager.setNetworkPreference(...)
, pero eso no es "forzar").
A pesar de que es probablemente UX terrible, puede informar al usuario que su aplicación no permite el uso de WiFi, a continuación, desactivar su WiFi si quieren continuar. Para ello, necesita los ACCESS_WIFI_STATE
y CHANGE_WIFI_STATE
. El código sería algo como esto:
manager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE); if(manager.isWifiEnabled()) { manager.setWifiEnabled(false); } // and to be sure: ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE);
ConnectivityManager.setNetworkPreference () está cerca de ser obsoleto. Pero lo que es más importante, si lo hace getNetworkPreference () antes de cambiar, devolverá ConnectivityManager.TYPE_MOBILE. Establecer allí no hace ninguna diferencia. En cuanto a HIPRI en sí, funciona en modo bastante extraño. En primer lugar, permite conexiones a todos los hosts, no sólo a aquellos explícitamente solicitados. En segundo lugar, cuando lo apagas con la función stopUsingFeature … (), no se apagará y seguirá estando activo. En tercer lugar, todas las aplicaciones de dispositivos empiezan a usarlo incluso si wifi está disponible, lo que contradice lo que se dice en la documentación.
Trate de mirar esto, tiene un montón de información y puede tener la solución que está buscando: ¿Cómo utilizar la conexión 3G en la aplicación Android en lugar de Wi-fi?
Tiene un ejemplo de servicio operativo que configura la conexión móvil HIPRI y la mantiene en funcionamiento. AFAIK esta es la única manera más o menos directa de tener wifi de trabajo y 3g en android. La única desventaja es que, esta conexión permitirá solamente la transmisión de datos a los servidores que el encaminamiento fue solicitado explícitamente a. Esto básicamente significa que no se puede enrutar a muchos servidores porque el host de búsqueda por nombre para obtener direcciones IP toma tiempo y hacerlo para 10 servidores tomará 30-60 segundos, lo que hace que comience lentamente. Así que usted debe saber exactamente qué servidores deben estar disponibles a través de la conexión móvil.