Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何直接从Android中的活动调用javascript函数?_Javascript_Android - Fatal编程技术网

如何直接从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

我想知道是否有任何方法可以从本机Android活动调用JavaScript函数

我发现:

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方法中的参数没有问题的情况下工作。很好。请投票支持我的答案……:)