Red de conocimiento informático - Problemas con los teléfonos móviles - Eliminarver código fuente

Eliminarver código fuente

Webview obtiene el título de la página web.

WebView mWebView =(WebView)findViewById(r . id . mWebView

mwebview .setwebviewclient(new WebViewClient(){

@override

public void onPageFinished(vista WebView, URL de cadena) {

actividad experimental . settitle(view . gettitle()); >});

getTitle

Cadena pública getTitle()

Obtiene el título de la página actual. Este es el título de la página actual antes de llamar a WebViewClient.onReceivedTitle.

Devuelve:

El título de la página actual.

El siguiente artículo es muy completo, pero el método onReceivedTitle() no es válido después de goback().

Si se reimprime, indique la fuente: Shishisha: /t12x3456.

Resumen de los problemas y soluciones comunes de Android WebView:

Cómo lidiar con las actualizaciones frecuentes de la versión y cómo mostrar nuestra interfaz de manera flexible, esto implica cuál es mejor entre la aplicación web y la aplicación nativa. Mal argumento. Como resultado, nació una aplicación híbrida. La parte flexible, como la página del evento en la página de inicio de Taobao Mall, podemos ver la mezcla de páginas web y páginas nativas en un episodio de Vanke Eslite, que aprovecha la flexibilidad. y facilidad de uso de la aplicación web. Es actualizable y aprovecha la eficiencia de la propia aplicación nativa.

Por supuesto, utilizarás controles como webview. Aquí, solucionaré algunos de los problemas que encontré durante el uso.

En primer lugar, la imagen de arriba ofrece una revisión básica de WebView:

La dirección de descarga del archivo original del mapa mental anterior:

/detail /t 12x 3456/ 6509195

Luego observe los problemas y soluciones específicos:

1. Personalice la interfaz de visualización de errores de WebView:

Reescriba onReceivedError( ) método en WebViewClient:

[java]Ver

Texto sin formato

/**

*Muestra una página de aviso de error personalizada y superpóngalo con una vista en WebView.

*/

Protect void showErrorPage() {

vista principal web de diseño lineal =(diseño lineal)MW ebview get parent();

initErrorPage();

while(vista principal web. obtener recuento de niños() gt; 1) {

vista principal web .eliminar viewat(0); p>

}

Diseño lineal. LayoutParams lp = nuevo LinearLayout. LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.

FILL _ PARENT);

vista principal web addview(mErrorView, 0, LP);

mIsErrorPage = true

}

protected void hideErrorPage() {

vista principal web de diseño lineal =(diseño lineal)MW ebview get parent();

mIsErrorPage = false

while(. vista principal web . obtener recuento de hijos() gt;1) {

vista principal web eliminar viewat(0);

}

}< /p. >

Protegido void initErrorPage() {

if (mErrorView == null) {

mErrorView = View.inflate(this, R.layout.online_error, null);

Botón Botón =(Botón)merrorview . findviewbyid(r . id . online _ error _ BTN _ reintentar

botón setonclicklistener(new OnClickListener(){

Public void onClick(view v) {

mwebview();

}

}); setonclicklistener(null);

}

}

[java]Ver

Texto sin formato

[java ]Ver

Texto sin formato

[java]Ver

Texto sin formato

@overlay

public void onreceivedererror (Vista WebView, código de error int, descripción de cadena, URL de error de cadena) {

ltspan style="white-space: pre" > lt/spangt.

ltspan style="white-space:pre" > lt/spangt. mErrorView.setVisibility(view.visible);

ltspan style="white-space: pre" > lt/spangt. super .onreceivedererror(vista, código de error, descripción, URL fallida);

}

2. Limpieza de cookies de WebView:

[java]Ver

.

Texto sin formato

cookiesyncmanager.create instancia(esta);

CookieSyncManager.getInstance(). iniciar sincronización();

CookieManager.getInstance().

eliminar cookie de sesión();

3. Limpiar caché e historial:

[java]Ver

Texto sin formato

vista web. cache(true);

webview.clear historial();

4. Determine si WebView se ha desplazado hasta el final de la página:

[java]. ]Ver

Texto sin formato

El método getScrollY() devuelve la distancia desde la parte superior del área visible actual hasta la parte superior de toda la página, que es la distancia de desplazamiento de la página actual. contenido.

El método getHeight() o getBottom() devuelve la altura del contenedor WebView actual.

GetContentHeight devuelve la altura de todo el html, pero es diferente de la altura actual de toda la página. Debido a que WebView tiene una función de zoom, la altura actual de toda la página debería ser en realidad la altura del html original multiplicada por la relación de zoom. Por lo tanto, el método exacto para juzgar los resultados de la corrección debe ser:

if(webview . getcontentheight * webview . get scale()= =(webview . get height() webview . get scroll()){/ / Ya en la parte inferior}

5.Intercepción de URL:

Android WebView no puede interceptar saltos de fragmentos en la página. Sin embargo, si la URL salta, la página se actualizará y el H5. La experiencia de la página se reducirá nuevamente. Solo se pueden inyectar métodos JS en WebView

6. Manejo de solicitudes que no sean hipervínculos (como solicitudes Ajax):

A veces es necesario agregar. encabezados de solicitud, pero en No hay forma de anular solicitudes para interceptar solicitudes que no sean hipervínculos y agregar encabezados de solicitud a través del método webview.loadurl (URL de cadena, encabezados HashMap).

Actualmente, se utiliza una solución temporal:

Primero, debe agregar una etiqueta/protocolo especial a la URL, como interceptar la solicitud correspondiente en el método onWebViewResource y luego unir el encabezado de la solicitud que se agregará al final de la URL. en forma de get

En el método shouldInterceptRequest(), puede interceptar todas las solicitudes de recursos en la página web, como la carga de JS, imágenes, solicitudes de Ajax, etc.