1.Android调用HTML中的JS方法:

(1)在HTML中,JavaScript给Android提供了两个可调用的方法:javacalljs()和javacalljswith(参数);

    在Android中,通过webview.loadUrl("javascript:方法名");来调用HTML的JS中的方法.

(2)demo演示:

<html>

<head>

         <title>Android与HTML互相JS方法调用</title>

         <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>

         <script type="text/javascript">

                  function javacalljs(){

                           document.getElementById("content").innerHTML = "</br>Java(android)调用HTML的方法";

                  }

                  function javacalljswith(args){

                           document.getElementById("content").innerHTML = ("</br>" + args);

                  }

         </script>

</head>

<body>

         <h1><div id="content"></div></h1>

</body>

</html>

安卓代码:

WebView contentWebView = (WebView) findViewById(R.id.webview);

//启用JavaScript

contentWebView.getSettings().setJavaScriptEnabled(true);

//加载HTML页面

contentWebView.loadUrl("HTML地址");

contentWebView.addJavascriptInterface(MainActivity.this , "android");

//无参调用Js点击
        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 无参数调用
                contentWebView.loadUrl("javascript:javacalljs()");

            }
        });
        //有参调用Js点击
        findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 传递参数调用
                contentWebView.loadUrl("javascript:javacalljswith(" + "'这里是调用js方法'" + ")");
            }
        });
 

 

 

2.HTML调用Android中的方法:

(1)HTML想调用Android中的方法通过οnclick="window.android.startFunction()" ,其中window.android.方法名 调用android方法

(2)demo演示:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        contentWebView = (WebView) findViewById(R.id.webview);
        // 启用javascript
        contentWebView.getSettings().setJavaScriptEnabled(true);
        // 从assets目录下面的加载html
        contentWebView.loadUrl("HTML网址");
        contentWebView.addJavascriptInterface(MainActivity.this,"android");
    }

    //由于安全原因 需要加 @JavascriptInterface
    @JavascriptInterface
    public void startFunction(){

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(MainActivity.this,"Toast",Toast.LENGTH_SHORT).show();

            }
        });
    }

    @JavascriptInterface
    public void startFunction(final String text){
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                new AlertDialog.Builder(MainActivity.this).setMessage(text).show();

            }
        });
    }

网页代码:

<input type="button"  value="调用android代码" οnclick="window.android.startFunction()" /><br/>
<input type="button"  value="调用android代码并传递参数" οnclick="window.android.startFunction('这里是js调用Android方法')"  />
 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐