studio programacion para libros gratis edición desarrollo desarrollar aprende aplicaciones android android-webview

para - programacion android pdf 2018



El botón de enviar formulario no funciona en WebView (2)

Es posible que deba habilitar otras cosas en webview para tener el equivalente completo de un navegador. Hay otras cosas que están deshabilitadas por defecto en webview además de javascript).

Pruebe esta configuración (según mi proyecto en el que tuvimos algunos problemas con la vista web):

mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setDomStorageEnabled(true); mWebView.getSettings().setDatabaseEnabled(true); mWebView.getSettings().setDatabasePath(dbpath); //check the documentation for info about dbpath mWebView.getSettings().setMinimumFontSize(1); mWebView.getSettings().setMinimumLogicalFontSize(1);

Al cargar algunos sitios web en una vista web, no puedo enviar sus formularios. Al hacer clic en la entrada de envío (botón), se enfoca, pero no sucede nada más.

Esos mismos sitios funcionan en Chrome (en el mismo dispositivo).

¿Cómo puedo arreglar esto? ¿Hay una configuración que me estoy perdiendo?

Los comentarios sobre por qué sucede este problema también serán apreciados.


Ejemplo

pasos para reproducir

  1. Cargue BrowseActivity , que cargará https://m.ebay.com/
  2. Una vez que la página se cargue, ingrese una consulta de búsqueda (por ejemplo, "Laptop")
  3. Presione el botón de búsqueda azul del formulario o el botón de acción del teclado del software (icono de lupa)

Comportamiento esperado : se debe enviar el formulario de búsqueda y mostrar los resultados de la búsqueda

Comportamiento real : el botón de búsqueda azul se enfoca (representado por un borde brillante), pero no sucede nada más.


BrowseActivity.java

public class BrowseActivity extends AppCompatActivity { WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_browse); mWebView = (WebView) findViewById(R.id.home_wv_content); mWebView.setWebViewClient(new WebViewClient()); mWebView.setWebChromeClient(new WebChromeClient()); mWebView.getSettings().setJavaScriptEnabled(true); // Ebay has a blue search button where this issue can be replicated mWebView.loadUrl("https://m.ebay.com"); } }

actividad_browse.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="my.example.BrowseActivity"> <WebView android:id="@+id/home_wv_content" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.constraint.ConstraintLayout>

Editar:

He considerado usar una interfaz de JavaScript personalizada para capturar el clic en el botón, leer la consulta de entrada y luego redirigir a la página de búsqueda.

De todos modos, este enfoque está estrechamente relacionado con el sitio web en sí (por ejemplo, ebay) y me gustaría que funcione con diferentes sitios. Además, no quiero cambios en el sitio web para romper mi aplicación.


Tuve problemas similares uno en particular es subir un archivo.

Comentarios sobre por qué ocurre este problema:

El problema es que hay diferentes versiones de SO y diferentes versiones de Web Engine. Como supondría que la vista web presenta una página HTML5 y no funciona bien en ese dispositivo dado, es probable que necesite más que JS habilitado.

Algunas páginas web realizan un seguimiento del número de envíos y necesitan acceso al almacenamiento web / del cliente.

WebSettings mWebSettings = mWebView.getSettings(); mWebSettings.setJavaScriptEnabled(true); // Done above mWebSettings.setDomStorageEnabled(true); // Try mWebSettings.setSupportZoom(false); mWebSettings.setAllowFileAccess(true); mWebSettings.setAllowContentAccess(true);

No puedo ayudar mucho sin saber al menos la versión del sistema operativo Android, que apuntará a la versión del motor web utilizada.

Aclamaciones.