La función Javascript no se llama en la vista web de android

Estoy haciendo una aplicación que se ejecuta en la vista web android. Estoy enfrentando un problema extraño, mi función JavaScript no recibe llamadas en <a></a> método onClick.

Aquí está mi código html y JavaScript:

 <html> <script type="text/javascript" src="http://blue.xxxxxxxx.com/xxxxx/site/js/jquery.js"></script> <script> function openFileDialog() { //$("#file").click(); alert("Test"); } </script> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file"><br> <input type="submit" name="submit" value="Submit"> </form> <a href="javascript:;" onclick="openFileDialog();">Shujaat</a> </body> </html> 

Y aquí está mi código de java webviews.

 package com.example.findozerapp; import my.functions.MyFunctions; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.os.Bundle; import android.webkit.WebSettings.ZoomDensity; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { Context context = MainActivity.this; Activity activity = MainActivity.this; WebView webView; MyFunctions myFunctions; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myFunctions = new MyFunctions(activity); webView = (WebView) findViewById(R.id.webView1); configureWebview(); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); webView.loadUrl("http://www.xxxxxxx.com/qadir/"); } private void configureWebview() { webView.setPadding(0, 0, 0, 0); webView.setInitialScale(myFunctions.setWebViewScale()); webView.getSettings().setDefaultZoom(ZoomDensity.FAR); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); webView.getSettings().setCacheMode(MODE_APPEND); webView.setWebViewClient(new MyWebViewClient()); } private class MyWebViewClient extends WebViewClient { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // TODO Auto-generated method stub super.onPageStarted(view, url, favicon); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub return super.shouldOverrideUrlLoading(view, url); } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); } } } 

Tengo permiso javascript en mi webview.

Pero su no llamar a mi función javascript openFileDialog() .

Y una cosa más. Cada vez que carga mi esta página web en el navegador predeterminado de android está funcionando perfectamente. Donde he hecho mal. Por favor, compruebe la configuración de mi webview.

Si ha establecido su targetSdkVersion en 17 o superior, debe agregar la anotación @JavascriptInterface a cualquier método que desee que esté disponible en su código de página web (el método también debe ser público). Si no proporciona la anotación, el método no será accesible por su página web cuando se ejecute en Android 4.2 o superior.

Cambia esto:

 <a href="javascript:;" onclick="openFileDialog();">Shujaat</a> 

A:

 <a href="javascript:void(0)" onclick="openFileDialog()">Shujaat</a> 

Prueba esto:

En tu código java (antes de webView.setWebViewClient(new MyWebViewClient());

 webView.setWebChromeClient(new WebChromeClient()); 

En tu código HTML:

 <a href="javascript:openFileDialog()">Shujaat</a> 

Intente establecer el cliente de Chrome en la vista web y sobreescriba el método onJsAlert en el cliente de Chrome, como se muestra a continuación.

  webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } }); 
  • Problema de webview.loadUrl ("about: blank")
  • ¿Cómo determinar cuándo Android WebView está completamente cargado?
  • Cómo modificar el contenido antes de representar en Android WebView?
  • Android - ¿Cómo puedo adjuntar un WebView a una actividad después de crearlo con el contexto de la aplicación
  • La mejor manera de interceptar una solicitud de WebView en Android
  • Colocar una imagen dentro de una vista web y ajustarla al ancho
  • Webview con interfaz de JavaScript
  • Cómo cargar un archivo js de los elementos en la vista web después de cargar html
  • Aliasing del borde de radio de WebView de Android
  • Pantalla blanca tras cerrar el video de pantalla completa abierto desde WebView
  • Cómo obtener el evento de la finalización del video de youtube en android webview
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.