如何直接从Android中的活动调用JavaScript函数?
我想知道是否有任何方法可以从本机Android活动调用JavaScript函数。如何直接从Android中的活动调用JavaScript函数?
我碰到:
webView.loadUrl("javascript:hello()");
但它没有为我工作。
此外,Android将如何知道JavaScript函数驻留在哪个html页面?
的Android只能调用JavaScript方法如果HTML页面在web视图当前加载
webView.loadUrl("javascript:hello()");
将调用hello方法在仅当当前被加载到web视图控制含有该方法中,页面的HTML页面writen
第一个电话
webview.loadUrl("Your html page url");
然后调用
webView.loadUrl("javascript:hello()");
使用JavaScript之前,首先必须使用“getJavaScriptEnabled()”(它的默认FALSE)检查Javascript是否已启用。而loadUrl()方法仅用于仅加载当前页面。它不会执行与JavaScript相关的任何操作。
例:
设置的WebView
//网页流量的初始化
webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
在WebView中加载HTML
webView.loadUrl("file:///android_asset/testhtml.html");
设置WebChromeClient到webView的
webView.setWebChromeClient(new MyJavaScriptChromeClient());
MyJavaScriptChromeClient类 这里我们必须重写onJsAlert()方法来处理JavaScript Alert函数。
private class MyJavaScriptChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message,final JsResult result) {
//handle Alert event, here we are showing AlertDialog
new AlertDialog.Builder(MainWebViewActivity.this)
.setTitle("JavaScript Alert !")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do your stuff
result.confirm();
}
}).setCancelable(false).create().show();
return true;
}
}
我的HTML文件: testhtml.html:
<html>
<body >
<div onclick="alert('hello')"> Click Me !! </div>
</body>
</html>
如何运作? 当文字“Click Me !!”在WebView上单击,调用android函数onJsAlert(WebView视图,String url,String消息,最终的JsResult结果)。要提醒的参数被复制到onJsAlert函数的消息参数。其余的处理在那里完成。 这里我们显示一个AlertDialog。
如果任何人有任何使用问题,像我一样,你需要打电话给你的javascript函数的页面加载完成,否则的JavaScript将不会被调用后:
webviewer.loadUrl("file:///android_asset/mypage.html");
webviewer.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url)
{
webviewer.loadUrl("javascript:hello()");
}
});
PLZ也投了我的回答... :) – Talha 2012-08-02 04:28:41