2011-06-24 78 views
6

我用谷歌提供的樣品用於演示JavaScript和Java之間實現雙向通信,警報不會出現在Android的網絡視圖?

參考[1]:

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

的功能工作正常。我可以從Java調用JavaScript函數 ,並從JavaScript中回調Java函數。

問題是,當我在JavaScript函數中使用警報時,它不會出現 ,但函數內部的功能正常工作。

爲什麼alert("test")裏面的JavaScript函數沒有出現在Android中。 我在web-view中加載JavaScript。當我在Android 中點擊一個按鈕時,我會調用該函數,但它不會出現。

如果有人知道這個問題,pealse幫助我。

感謝

+0

你可以張貼一些代碼? – Mikola

+0

我使用路徑中的代碼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

回答

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

此代碼工作完美,顯示我警告框.. ,這是我
的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

沒有警報未來 – Karthi

+1

我寫了相同的代碼,這是工作對我來說:) :) – Android

+0

ya它正在工作,我犯了一個錯誤...而不是直接使用WebChromeClient()作爲最終的類MyWebChromeClient擴展了WebChromeClient { @Override public boolean onJsAlert(WebView view, String url,String message,JsResult result)Log.d(LOG_TAG,message); result.confirm(); 返回true; } }然後我用你說的工作 – Karthi

0

使用以下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

只需使用WebChromeClient即可。它將盡一切努力。

mWebview.setWebChromeClient(new WebChromeClient()); 

它會工作。

1

通過將以下兩行,我的JavaScript的工作:

mWebview.setWebViewClient(new WebViewClient()()); 
mWebview.setWebChromeClient(new WebChromeClient()); 
相關問題