如何直接从Android中的活动调用javascript函数?
我想知道是否有任何方法可以从本机Android活动调用JavaScript函数 我发现:如何直接从Android中的活动调用javascript函数?,javascript,android,Javascript,Android,我想知道是否有任何方法可以从本机Android活动调用JavaScript函数 我发现: webView.loadUrl("javascript:hello()"); 但这对我不起作用 另外,Android如何知道这个JavaScript函数位于哪个html页面 Android只能在webView中当前加载html页面时调用javascript方法 webView.loadUrl("javascript:hello()"); 仅当包含此方法的页面当前加载到webview控件中时,才会调用ht
webView.loadUrl("javascript:hello()");
但这对我不起作用
另外,Android如何知道这个JavaScript函数位于哪个html页面 Android只能在webView中当前加载html页面时调用javascript方法
webView.loadUrl("javascript:hello()");
仅当包含此方法的页面当前加载到webview控件中时,才会调用html页面中编写的hello方法
第一个电话
webview.loadUrl("Your html page url");
然后打电话
webView.loadUrl("javascript:hello()");
在使用JavaScript之前,首先必须使用“getJavaScriptEnabled()”(默认值为FALSE)检查应用程序中是否启用了JavaScript。和loadUrl()方法仅用于加载当前页面。它不做任何与JavaScript相关的事情 例如: 设置WebView //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警报函数
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>
点击我!!
它是如何工作的?
单击WebView上的文本“Click Me!!”时,将调用android函数onJsAlert(WebView视图、字符串url、字符串消息、最终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()");
}
});
我已经启用了答案1和2中所述的所有功能。但一切都不起作用。请在浏览器上检查html页面,并检查html页面javascript是否有任何错误…解决方案在javascript方法中的参数没有问题的情况下工作。很好。请投票支持我的答案……:)