Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Compruebe la conexión a Internet en Android WebView (Córdoba)

Sé que hay un montón de preguntas y respuestas sobre esto en Stackoverflow, he leído un montón de ellos, pero ninguno de ellos funcionan.

He aclarado en el título Android WebView porque es el objetivo más importante, pero me gustaría que esto funciona en otros dispositivos también. He probado el siguiente código en una aplicación construida con Intel XDK instalado en un SM-G355M con Android 4.4.2 y en Safari instalado en un iPhone 5C con iOS 9.3.4 ;

Todo lo que obtengo en ambos casos es el mismo valor, true (a veces me sale false incluso tengo una conexión a Internet).

Lo intenté:

  1. navigator.onLine , da siempre el mismo valor.
  2. document.addEventListener("online", ... no activa
  3. ajax no funciona, de todos modos no afecta al servidor?

Código: https://nanilab.com/stackoverflow/webview-internet-connection.php


Opción 1 :

 function option1(){ var isOffline = 'onLine' in navigator && !navigator.onLine, text = isOffline == true ? ' without connection ' : ' connected '; $('.option-one span').text(text); $('.option-one i').text('checked').hide().fadeIn(200); setTimeout(function(){ option1(); }, 1000); } 

Opción 2 :

 window.addEventListener("offline", function(){ $('.option-two span').text(' without connection'); }, false); window.addEventListener("online", function(){ $('.option-two span').text(' connected'); }, false); 

Opción 3 :

 function option3(){ $.ajax({ url: '/stackoverflow/blank.php', success: function(data){ print(' connected '); }, error: function(jqXHR, textStatus, error) { print(' without connection '); } }); function print(text){ $('.option-three span').text(text); $('.option-three i').text('checked').hide().fadeIn(200); setTimeout(function(){ option3(); }, 2000); } } 

Aplicación construida con Intel XDK instalado en un SM-G355M con Android 4.4.2

Https://youtu.be/wHJHG5dP_eM


¿Que estoy haciendo mal?

2 Solutions collect form web for “Compruebe la conexión a Internet en Android WebView (Córdoba)”

Apache Cordova (llamado PhoneGap) es un marco de desarrollo móvil de código abierto. Le permite utilizar tecnologías web estándar : HTML5, CSS3 y JavaScript para el desarrollo multiplataforma . Las aplicaciones se ejecutan dentro de envoltorios dirigidos a cada plataforma y se basan en enlaces API compatibles con estándares para acceder a las capacidades de cada dispositivo, como sensores, datos, estado de la red , etc.

En su problema (opción 1):

 navigator.onLine 

no está funcionando porque (en android) está roto (la versión "en bruto", Cordova permitió que la vista web sea diferente) (como se ha averiguado), debe construir su aplicación WebView con el Framework de Córdoba . Córdoba fue desarrollado EXACTAMENTE para resolver este problema. El GAP en PhoneGap es la brecha entre la "máquina virtual", "sandbox" y el acceso al hardware, Y es multiplataforma.

Permisos de Android: app / AndroidManifest.xml

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

Cordova Permisos: app / res / xml / config.xml

 <feature name="NetworkStatus"> <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" /> </feature> 

Guía rápida Cordova instalación

Ir a la página web para obtener instrucciones de instalación

https://cordova.apache.org/docs/en/latest/guide/cli/

Ir a la página web y descargar nodejs para su sistema

https://nodejs.org/es/download/

Archivo de ejemplo

 node-v4.5.0-x86.msi 

Ejecutar (instalarlo)

 success. 

En Windows:

 C:\>npm install -g cordova 

¡Y tú te vas!

He construido tu código en cordova, estoy llegando (espero, difícil problema), he aquí alguna imagen de lo que he hecho hasta ahora [no en WebView exactamente todavía, {ver la salida navigator.userAgent en la segunda imagen} ] (Observe que el oyente de eventos está trabajando; O), pero no lo suficientemente bueno: o (). ¿Dónde están todos los programadores de Córdoba ?, sólo escuché de Cordova la semana pasada:

Imagen demo offline Imagen de demostración en línea

En Chrome y Safari, si el navegador no puede conectarse a una red de área local (LAN) o un enrutador, está desconectado; Todas las otras condiciones vuelven verdaderas. Por lo tanto, si bien puede suponer que el explorador está desconectado cuando devuelve un valor falso, no puede asumir que un valor verdadero significa necesariamente que el explorador puede acceder a Internet. Usted podría estar recibiendo falsos positivos, como en los casos en que el equipo está ejecutando un software de virtualización que tiene adaptadores ethernet virtuales que siempre están "conectados". Por lo tanto, si realmente desea determinar el estado en línea del navegador, debe desarrollar medios adicionales para comprobar. Para obtener más información, consulte el artículo HTML5 Rocks, http://www.html5rocks.com/en/mobile/workingoffthegrid/.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.