Android与js交互实例

西木 2014-01-12

Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true

Android(Java)与JavaScript(HTML)交互有四种情况:

1) Android(Java)调用HTML中js代码

2) Android(Java)调用HTML中js代码(带参数)

3) HTML中js调用Android(Java)代码

4) HTML中js调用Android(Java)代码(带参数)

下面示例总结这四种情况,直接上干货:

1) Android(Java)

private void showWebView(){     // webView与js交互代码  
    try {  
        mWebView = new WebView(this);  
        setContentView(mWebView);  
          
        mWebView.requestFocus();  
          
        mWebView.setWebChromeClient(new WebChromeClient(){  
            @Override  
            public void onProgressChanged(WebView view, int progress){  
                JSAndroidActivity.this.setTitle("Loading...");  
                JSAndroidActivity.this.setProgress(progress);  
                  
                if(progress >= 80) {  
                    JSAndroidActivity.this.setTitle("JsAndroid Test");  
                }  
            }  
        });  
          
        mWebView.setOnKeyListener(new View.OnKeyListener() {        // webview can go back  
            @Override  
            public boolean onKey(View v, int keyCode, KeyEvent event) {  
                if(keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {  
                    mWebView.goBack();  
                    return true;  
                }  
                return false;  
            }  
        });  
          
        WebSettings webSettings = mWebView.getSettings();  
        webSettings.setJavaScriptEnabled(true);  
        webSettings.setDefaultTextEncodingName("utf-8");  
  
        mWebView.addJavascriptInterface(getHtmlObject(), "jsObj");  
        mWebView.loadUrl("http://192.168.1.121:8080/jsandroid/index.html");  
    } catch (Exception e) {  
        e.printStackTrace();  
    }  
}  
  
private Object getHtmlObject(){  
    Object insertObj = new Object(){  
        public String HtmlcallJava(){  
            return "Html call Java";  
        }  
          
        public String HtmlcallJava2(final String param){  
            return "Html call Java : " + param;  
        }  
          
        public void JavacallHtml(){  
            runOnUiThread(new Runnable() {  
                @Override  
                public void run() {  
                    mWebView.loadUrl("javascript: showFromHtml()");  
                    Toast.makeText(JSAndroidActivity.this, "clickBtn", Toast.LENGTH_SHORT).show();  
                }  
            });  
        }  
          
        public void JavacallHtml2(){  
            runOnUiThread(new Runnable() {  
                @Override  
                public void run() {  
                    mWebView.loadUrl("javascript: showFromHtml2('IT-homer blog')");  
                    Toast.makeText(JSAndroidActivity.this, "clickBtn2", Toast.LENGTH_SHORT).show();  
                }  
            });  
        }  
    };  
      
    return insertObj;  
}  

2) js(HTML)

public void JavacallHtml(){  
    runOnUiThread(new Runnable() {  
        @Override  
        public void run() {  
            mWebView.loadUrl("javascript: showFromHtml()");  
            Toast.makeText(JSAndroidActivity.this, "clickBtn", Toast.LENGTH_SHORT).show();  
        }  
    });  
}  

相关推荐