Cómo cargar o recuperar una página web en modo en línea y fuera de línea en la aplicación android?

Necesito cargar y recuperar una página web HTML en la memoria interna o externa del dispositivo android. Lo que necesito es descargar y recuperar una página web en android usando la vista web.

Hay muchas preguntas repetidas similares a descargar o guardar la página web. Pero ninguna de las respuestas me ayudó. ¡Guíame!

Gracias por adelantado.

No sé es esta solución adecuada para your.if que desea ver un sitio web en mod sin conexión y mod en línea puede utilizar un rastreador web para obtener todos los datos del sitio web. Aquí hay un ejemplo de proyecto para android web crawler.after que usted puede cargar un sitio web de url o memoria local basado en su disponibilidad de Internet.

Obtener el código HTML de WebView cargado

Guardar cadena como archivo html android

Con el enlace de arriba dos puede lograr su requisito, puede almacenar contenido html en el archivo y luego almacenar en el almacenamiento interno, entonces usted puede cargar en modo fuera de línea.

Un WebView puede cargar y renderizar páginas HTML y local remote , además de soportar 'data' scheme URL .

Opciones de almacenamiento

Preferencias compartidas (no es útil en su caso)

Almacene datos primitivos privados en pares clave-valor.

Almacenamiento interno (recomendado para su caso)

Almacenar datos privados en la memoria del dispositivo.

Almacenamiento externo ( puede utilizar en su caso, pero no se recomienda)

Almacene los datos públicos en el almacenamiento externo compartido.

Bases de datos SQLite (Puede utilizar en su caso, pero no se recomienda)

Almacenar datos estructurados en una base de datos privada.

Conexión de red (Puede utilizar en su caso, pero no funcionará en modo sin conexión)

Almacene datos en la web con su propio servidor de red.

Es posible que desee intentar utilizar el método WebViewClient de WebViewClient que utilice set a su WebView . Le permite conocer todos los recursos que se cargan durante el proceso de carga html. Así que usted puede hacer algo como esto:

 WebViewClient webViewClient = new WebViewClient() { @TargetApi(VERSION_CODES.LOLLIPOP) @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { WebResourceResponse response = null; if ("GET".equals(request.getMethod())) { try { response = getWebResponse(view.getContext().getApplicationContext(), request.getUrl().toString()); } catch (Exception e) { Log.e(TAG, "Error while overriding getting web response", e); } } return response; } @SuppressWarnings("deprecation") @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { WebResourceResponse response = null; try { response = getWebResponse(view.getContext().getApplicationContext(), url); } catch (Exception e) { Log.e(TAG, "Error while overriding getting web response", e); } return response; } WebResourceResponse getWebResponse(Context context, String url) { // YOUR IMPLEMENTATION that will save resource located at passed url } } webView.setWebViewClient(webViewClient); 

Eso suena como un simple mecanismo de almacenamiento en caché webview para mí.

prueba esto

  WebView webView = new WebView( context ); webView.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB webView.getSettings().setAppCachePath( getApplicationContext().getCacheDir().getAbsolutePath() ); webView.getSettings().setAllowFileAccess( true ); webView.getSettings().setAppCacheEnabled( true ); webView.getSettings().setJavaScriptEnabled( true ); webView.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT ); // load online by default if ( !isNetworkAvailable() ) { // loading offline webView.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK ); } 

El método isNetworkAvailable () comprueba si hay una conexión de red activa:

 private boolean isNetworkAvailable() { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE ); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); return activeNetworkInfo != null && activeNetworkInfo.isConnected(); } 

WebView.loadUrl (" http://www.google.com ");

Por último, no olvide añadir los siguientes tres permisos a su AndroidManifest.xml:

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

Guardar la página web en la memoria caché;

 WebView webView = new WebView( context ); webView.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB webView.getSettings().setAppCachePath( getApplicationContext().getCacheDir().getAbsolutePath() ); webView.getSettings().setAllowFileAccess( true ); webView.getSettings().setAppCacheEnabled( true ); webView.getSettings().setJavaScriptEnabled( true ); webView.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT ); // load online by default 

Compruebe este enlace WebView cargue el sitio web cuando esté en línea, cargue el archivo local cuando esté fuera de línea

  • Vista web de Android en Unity3d (C #)
  • Android WebView PictureListener Deprecated - ¿Todavía no hay alternativa?
  • WebView carga el sitio web cuando está en línea, carga el archivo local cuando está fuera de línea
  • Ocultar elemento HTML en Android WebView?
  • Cómo interceptar datos POST en una vista web de android
  • Detener evento táctil de ser interceptado por ViewPager si hay evento táctil en la vista web
  • WebView con certificado de cliente SSL en Android 4 ICS
  • Congelar o crear una vista Web estable al seleccionar la barra de acción Volver? Impedir Cargar / recargar cada vez
  • Vídeo con iframe no se muestra en la vista web de Android
  • Colocación de contenido HTML en dos columnas dentro de WebView
  • Android reproducir video de youtube en la vista web
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.