Forzar Android a utilizar la red Wifi sin Internet

Estoy construyendo una aplicación para Android que necesita comunicarse a través de una red WiFi que no tendrá acceso a Internet. El problema es que incluso cuando el WiFi está conectado, android elige utilizar datos celulares / móviles cuando no hay conexión a internet en la red wifi.

He leído muchos mensajes sobre el tema, muchos de los cuales implican el enraizamiento del dispositivo, pero eso no es posible con una aplicación de producción (dispositivos de enraizamiento no es una opción). otra solución (como mi código abajo) sugiero usar bindProcessToNetwork() que funciona perfectamente en mi Sony Z2, pero no en otros dispositivos que he probado en (todos los que ejecutan 6.0.1)

 private void bindToNetwork() { final ConnectivityManager connectivityManager = (ConnectivityManager) mActivity.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkRequest.Builder builder; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { builder = new NetworkRequest.Builder(); //set the transport type do WIFI builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); connectivityManager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { connectivityManager.bindProcessToNetwork(null); if (barCodeData.getSsid().contains("screenspace")) { connectivityManager.bindProcessToNetwork(network); } } else { //This method was deprecated in API level 23 ConnectivityManager.setProcessDefaultNetwork(null); if (barCodeData.getSsid().contains("screenspace")) { ConnectivityManager.setProcessDefaultNetwork(network); } } connectivityManager.unregisterNetworkCallback(this); } }); } } 

3 Solutions collect form web for “Forzar Android a utilizar la red Wifi sin Internet”

¿Podría intentar establecer el valor global captive_portal_detection_enabled a 0 (false).

Lo que realmente sucede es que por defecto, cada vez que se conecta a un wifi, el FW probará contra un servidor (normalmente google) para ver si es un wifi cautivo (necesita acceso). Así que si su wifi no está conectado a google, esta comprobación fallará. Después de eso, el dispositivo sabe que el wifi no tiene conexión a Internet y simplemente no se conecta automáticamente a él.

Al establecer esta configuración en 0, se evitará esta comprobación.

Programatically: Settings.Global.putInt(getContentResolver(), Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, 0);

Editar: Es posible que deba usar la cadena "captive_portal_detection_enabled" directamente, en lugar de la constante que no es visible dependiendo de la versión de Android.

usted necesitaría inhabilitar datos móviles en los ajustes (no seguro, si esto se puede hacer programmatically, que podría ser una opción posible) – o quite el USIM;

de lo contrario el comportamiento común es que siempre se recurrirá a la mejor conexión disponible (mientras que una conexión con pasarela de Internet podría ser preferido, ya que es utilizado por la mayoría de la aplicación).

también vea esta respuesta .

Usted puede comprobar si wifi está conectado a continuación, proceder de otro modo mostrar un diálogo al usuario pidiéndole que se conecte a una red wifi

Dado que el método NetworkInfo.isConnected () ahora está obsoleto en API-23, aquí hay un método que detecta si el adaptador Wi-Fi está conectado y también está conectado a un punto de acceso usando WifiManager:

 private boolean checkWifiOnAndConnected() { WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE); if (wifiMgr.isWifiEnabled()) { // Wi-Fi adapter is ON WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); if( wifiInfo.getNetworkId() == -1 ){ return false; // Not connected to an access point } return true; // Connected to an access point } else { return false; // Wi-Fi adapter is OFF } } 
  • Cómo evitar el retraso en los mensajes de GCM de Android / cambio de latidos del corazón
  • WifiDirectActivity Alteración de la muestra: Transfiere un ArrayList <String> p2p
  • Supervisión del WiFi en el dispositivo Android
  • Devolución de llamada en el dispositivo que se conecta a Wifi Hotspot
  • Obtener la velocidad actual de Internet (móvil y Wifi) con Android
  • Android wifi sniffer: encuentra dispositivos cercanos
  • ¿Cómo mantenerse conectado a través de la red móvil después de que WIFI esté conectado en Android?
  • Compartir ajustes WiFi como QR-Code para WPA2 Enterprise
  • Android Wifi Direct detecta a sus compañeros pero Peer List es emty
  • Cómo puedo determinar la velocidad de Internet en mi aplicación Android
  • ¿Es posible intercambiar mensajes entre 2 dispositivos Android a través de wifi?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.