Android 与 JavaScript 互调

来源:互联网 发布:学matlabgui编程的意义 编辑:程序博客网 时间:2024/05/21 11:30

做混合开发的同学,肯定了解 Android 与JS互调,本文只是Android 与 JavaScript 互调的简单使用,大神请忽略。

阅读完本文,你应该可以学会,如何通过Android调用JS方法,JS调用Android的方法。

Android代码

@SuppressLint("SetJavaScriptEnabled")public class MainActivity extends Activity {//声明一个webviewprivate WebView mWebView;private MyWebViewClient WVClient;private WebSettings webSettings;private MyWebChromeClient chromeClient;//调用JS的Buttonprivate Button callJSBtn;//Object对象,用来跟JS网页绑定private JSObject  jsobject;//android调用JS网页的时候会用到private Handler mHandler = new Handler();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {// TODO Auto-generated method stubmWebView = (WebView) findViewById(R.id.webview);callJSBtn = (Button)findViewById(R.id.calljs);WVClient = new MyWebViewClient();chromeClient = new MyWebChromeClient();jsobject = new JSObject(MainActivity.this); webSettings = mWebView.getSettings();webSettings.setJavaScriptEnabled(true);webSettings.setBuiltInZoomControls(true);webSettings.setSavePassword(false);//支持多种分辨率,需要js网页支持webSettings.setUserAgentString("mac os");webSettings.setDefaultTextEncodingName("utf-8");//显示本地js网页mWebView.loadUrl(StringUrl.LOACL);mWebView.setWebViewClient(WVClient);mWebView.setWebChromeClient(chromeClient);//注意第二个参数JsTest,这个是JS网页调用Android方法的一个类似ID的东西mWebView.addJavascriptInterface(jsobject, "jsTest");//调用JS网页callJSBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {mHandler.post(new Runnable() {@Overridepublic void run() {//调用JS中的 函数,当然也可以不传参mWebView.loadUrl("javascript:androidCallJS('顺便传个参数给JS!')");}});}});}//单击系统返回键网页回退@Overridepublic void onBackPressed() {if (mWebView.canGoBack()) {mWebView.goBack();} else {this.finish();}}}


html代码 放在 assets目录下。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html40/strict.dtd"><HTML><HEAD><meta name="viewport" content="width=device-width, target-densitydpi=device-dpi" /><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><script>   function androidCallJS(name){      alert("android call me!"+name);   }       function testJsCallAndroid(){      jsTest.JsCallAndroid();      }   </script></HEAD><BODY><span>测试js使用</span><button id='btntest' onclick='testJsCallAndroid()'>JS调用android的方法</button></BODY></HTML>




1 0
原创粉丝点击