zoukankan      html  css  js  c++  java
  • webview和js交互

    public class WebViewDemo extends Activity {
    
        private static final String LOG_TAG = "WebViewDemo";
    
        private WebView mWebView;
    
        private Handler mHandler = new Handler();
    
        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            setContentView(R.layout.main);
            mWebView = (WebView) findViewById(R.id.webview);
    
            WebSettings webSettings = mWebView.getSettings();
            webSettings.setSavePassword(false);
            webSettings.setSaveFormData(false);
            webSettings.setJavaScriptEnabled(true);
            webSettings.setSupportZoom(false);
    
            mWebView.setWebChromeClient(new MyWebChromeClient());
    
            mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
    
            mWebView.loadUrl("file:///android_asset/demo.html");
        }
    
        final class DemoJavaScriptInterface {
    
            DemoJavaScriptInterface() {
            }
    
            /**
             * This is not called on the UI thread. Post a runnable to invoke
             * loadUrl on the UI thread.
             */
            public void clickOnAndroid() {
                mHandler.post(new Runnable() {
                    public void run() {
                        mWebView.loadUrl("javascript:wave()");
                    }
                });
    
            }
        }
    
        /**
         * Provides a hook for calling "alert" from javascript. Useful for
         * debugging your javascript.
         */
        final class MyWebChromeClient extends WebChromeClient {
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                Log.d(LOG_TAG, message);
                result.confirm();
                return true;
            }
        }
    }


    demo.html
    <html>
        <script language="javascript">
            /* This function is invoked by the activity */
            function wave() {
                alert("1");
                document.getElementById("droid").src="android_waving.png";
                alert("2");
            }
        </script>
        <body>
            <!-- Calls into the javascript interface for the activity -->
            <a onClick="window.demo.clickOnAndroid()"><div style="80px;
                margin:0px auto;
                padding:10px;
                text-align:center;
                border:2px solid #202020;" >
                    <img id="droid" src="android_normal.png"/><br>
                    Click me!
            </div></a>
        </body>
    </html>


    ①android如何调用js。
    调用形式:
    mWebView.loadUrl("javascript:wave()");加载js中的wave()方法

    ②js如何调用android。
    调用形式:
    <a onClick="window.demo.clickOnAndroid()">

    代码中的“demo”是在android中指定的调用名称,即
    mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");

    代码中的clickOnAndroid()是“demo”对应的对象:new DemoJavaScriptInterface() 中的一个方法。

    ③双向交互。



  • 相关阅读:
    unalias---取消命令别名
    alias---设置别名
    type---显示指定命令的类型
    logout命令用于退出当前登录的Shell
    enable&&builtin---shell内部命令
    read---读取变量值
    readonly&&declare&&unset &&export&&env环境变量
    fc---输出历史命令列表
    command---调用指定的指令并执行
    terminfo 数据库?
  • 原文地址:https://www.cnblogs.com/wwccyy66/p/6194952.html
Copyright © 2011-2022 走看看