2011-06-24 11 views
6

utilizo la muestra proporcionada por Google para demostrar la comunicación de dos vías entre JavaScript y Java,¿La alerta no aparece desde la vista web en android?

ref [1]:

http://code.google.com/p/apps-for-android/source/browse/trunk/Samples/WebViewDemo/src/com/google/android/webviewdemo/WebViewDemo.java

La funcionalidad está trabajando muy bien. Puedo llamar a la función JavaScript desde Java y devolver la función Java desde JavaScript.

El problema es que cuando uso una alerta dentro de una función de JavaScript no aparecerá , pero la funcionalidad dentro de la función funciona correctamente.

¿Por qué alert("test") dentro de una función de JavaScript no aparece en Android. Puedo cargar el JavaScript en un web-view. Cuando presiono un botón en Android Llamo a la función, pero no aparece.

Si alguien conoce el problema, permítame ayudarme.

Gracias

+0

Se puede publicar algo de código? – Mikola

+0

Uso el código de la ruta http://code.google.com/p/apps-for-android/source/browse/trunk/Samples/WebViewDemo/assets/demo.html http://code.google.com /p/apps-for-android/source/browse/trunk/Samples/WebViewDemo/src/com/google/android/webviewdemo/WebViewDemo.java – Karthi

Respuesta

13
setContentView(R.layout.main); 
     WebView webview = (WebView) findViewById(R.id.webview); 

     WebSettings webSettings = webview.getSettings(); 

     webSettings.setJavaScriptEnabled(true); 

     webSettings.setBuiltInZoomControls(true); 

     webview.requestFocusFromTouch(); 

     webview.setWebViewClient(new WebViewClient()); 
     webview.setWebChromeClient(new WebChromeClient());  

    webview.loadUrl("file:///android_asset/test.html"); 

este código de trabajo perfecto y me muestra cuadro de alerta .. y esta es mi
test.html

<html> 
<head> 
<script type="text/javascript"> 
function show_alert() 
{ 
alert("Hello! I am an alert box!"); 
} 
</script> 
</head> 
<body> 

<input type="button" onclick="show_alert()" value="Show alert box" /> 

</body> 
</html> 
+1

no hay alerta no está llegando – Karthi

+1

escribí el mismo código y esto está funcionando para mí :) :) – Android

+0

ya está funcionando, cometí un error ... en lugar de usar WebChromeClient() directamente como tú, lo usé como clase final MyWebChromeClient extiende WebChromeClient { @Override public boolean onJsAlert (vista WebView, URL de cadena, mensaje de cadena, resultado de JsResult) { Log.d (LOG_TAG, mensaje); result.confirm(); return true; } } luego uso como dijiste que está funcionando – Karthi

0

Usar la siguiente mehtod,

WebView wv=new WebView(this); 
wv.setWebChromeClient(new WebChromeClient() { 
@Override 
    public boolean onJsAlert(WebView view, String url, String message,JsResult result) { 
    //Required functionality here 
    return super.onJsAlert(view, url, message, result); 
} 
0

Simplemente use WebChromeClient. Hará todo.

mWebview.setWebChromeClient(new WebChromeClient()); 

Funcionará.

1

Mediante la adición de los siguientes dos líneas, mi JavaScript funciona:

mWebview.setWebViewClient(new WebViewClient()()); 
mWebview.setWebChromeClient(new WebChromeClient()); 
Cuestiones relacionadas