Cómo recuperar el contenido HTML de WebView (como una cadena)
¿Cómo puedo recuperar todo el contenido HTML que se muestra actualmente en un WebView?
Encontré WebView.loadData()
pero no pude encontrar el equivalente opuesto (por ejemplo, WebView.getData ())
- Android: dibuja el video de YouTube en SurfaceTexture
- La descarga de WebView abre la ventana del navegador por un breve momento antes de volver a WebView
- OnLongClickListener no funciona en WebView
- Inicio de sesión de Twitter utilizando WebView
- Android WebView HTML5 Video Spawns MediaPlayer que vive para siempre en Samsung S4
Tenga en cuenta que estoy interesado en recuperar los datos de las páginas web que no tengo control sobre (es decir, no puedo inyectar una función de JavaScript en esas páginas, por lo que llamaría una interfaz de Javascript en WebView).
- Android: mostrar / ocultar fragmento deja un área vacía
- React-Native: Descarga y carga de archivos desde android webview
- Implementación horizontal / vertical dedo deslizar desplazamiento en android panal webview / webkit?
- Menú contextual en Android WebView
- Vista demasiado grande para encajar en la caché de dibujo en Webview dentro de scrollview
- Política de seguridad de contenido de WebView
- No se puede seleccionar la opción en la vista web de android
- Cómo jugar auto iframe youtube en webview android
Desafortunadamente no hay manera fácil de hacer esto.
Consulte ¿Cómo obtengo el contenido de la página web desde un WebView?
Usted podría apenas hacer un HttpRequest a la misma página que su WebView y conseguir la respuesta.
Usted puede lograr esto a través de:
final Context myApp = this; /* An instance of this class will be registered as a JavaScript interface */ class MyJavaScriptInterface { @SuppressWarnings("unused") public void processHTML(String html) { // process the html as needed by the app } } final WebView browser = (WebView)findViewById(R.id.browser); /* JavaScript must be enabled if you want it to work, obviously */ browser.getSettings().setJavaScriptEnabled(true); /* Register a new JavaScript interface called HTMLOUT */ browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); /* WebViewClient must be set BEFORE calling loadUrl! */ browser.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { /* This call inject JavaScript into the page which just finished loading. */ browser.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"); } }); /* load a web page */ browser.loadUrl("http://lexandera.com/files/jsexamples/gethtml.html");
Usted recibirá el contnet Html entero en el método processHTML. Y no hará otra solicitud para la página web. Por lo que también es una manera más eficiente de hacer esto.
Gracias.
webView.evaluateJavascript("(function(){return window.document.body.outerHTML})();", new ValueCallback<String>() { @Override public void onReceiveValue(String html) { } });
Puede interceptar las solicitudes HTTP hechas por WebView y, a continuación, modificar el código HTML para incluir las funciones JavaScript que necesita para comunicarse con la página HTML. Usted intercepta las peticiones HTTP a través del método WebInterceptRequest () de WebViewClient.
Utilizando este mecanismo, puede acceder a la página cargada cargando usted mismo, modificarlo antes de pasarlo a WebView, e incluso almacenarlo en caché localmente si lo desea.
Puede pasar datos a través de JavaScriptInterface de webview .. he hecho esto. Guardar los datos a una variable estática y luego procesar bajo android applcation
Agregue esto a su código:
private String getUrlSource(String site) throws IOException { //GNU Public, from ZunoZap Web Browser URL url = new URL(site); URLConnection urlc = url.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader( urlc.getInputStream(), "UTF-8")); String inputLine; StringBuilder a = new StringBuilder(); while ((inputLine = in.readLine()) != null) a.append(inputLine); in.close(); return a.toString(); }
Entonces le permite decir lo que para obtener el origen de Google que haría:
getURLSource("http://google.com");
- ¿Cómo habla el código del módem con el código de Android?
- La aplicación aleatoria se bloquea en Android Wear 5.0.X