2011-06-24 11 views
6

Używam próbki dostarczone przez Google do wykazania dwa dwukierunkowej komunikacji między JavaScript i Java,Alert nie jest wyświetlany z widoku internetowego w systemie Android?

ref [1]:

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

Funkcjonalność działa poprawnie. Jestem w stanie wywołać funkcję JavaScript z Java i wywołać funkcję Java z JavaScript.

Problem polega na tym, że używam alertu w funkcji JavaScript, który wygrał , ale funkcja wewnątrz funkcji działa poprawnie.

Dlaczego alert("test") w funkcji JavaScript nie pojawia się w systemie Android. Załaduję kod JavaScript w postaci web-view. Kiedy klikam przycisk w Androidzie , wywołuję funkcję, ale ona się nie pojawia.

Jeśli ktoś zna problem, pomóż mi.

Dzięki

+0

można zakładać jakiś kod? – Mikola

+0

Używam kodu ze ścieżki 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

Odpowiedz

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"); 

ten kod roboczych doskonały i pokazuje mi alert box .. i to jest mój
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

brak alertu nie nadchodzi – Karthi

+1

Napisałem ten sam kod i to działa dla mnie :) :) – Android

+0

ya to działa, popełniłem błąd ... zamiast używać WebChromeClient() prosto jak ty, użyłem go jako ostatniej klasy MyWebChromeClient rozszerza WebChromeClient { @Override public boolean onJsAlert (Widok WebView, String url, String message, wynik JsResult) { Log.d (LOG_TAG, wiadomość); result.confirm(); return true; } } następnie używam, jak powiedziałeś, działa – Karthi

0

Użyj następującego 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

Wystarczy użyć WebChromeClient. Zrobi wszystko.

mWebview.setWebChromeClient(new WebChromeClient()); 

To zadziała.

1

Dodając następujące dwa wiersze, moje JavaScript działa:

mWebview.setWebViewClient(new WebViewClient()()); 
mWebview.setWebChromeClient(new WebChromeClient()); 
Powiązane problemy