最近在做一個藍牙項目,需要用到圖表,感覺H5的圖表要比android一些第三方控件要簡單靈活一些,之前一直用的是原生開發(fā),于是對android和H5交互傳遞數(shù)據做了一些研究,下面對最近的研究做一些記錄:
第一種是直接調用JS里面的方法,不用等到頁面加載完成,簡單講就是該js方法不需要寫在onload方法里面或者Jquery的頁面加載回調方法中。但是,要調用在在onload方法里面或者Jquery的頁面加載回調方法中的方法,這樣是不可以的,那么怎么做才能調用呢?看第二條。
1.用到的android原生控件是傳統(tǒng)的WebView,還需要會一些簡單的HTML5的基礎知識。
//從xml中獲取WebView控件對象
WebView wv=(WebView)findViewById(R.id.wb);
//獲取WebView的Setting配置對象
WebSettings ws=wv.getSettings();
//設置WebView是否可以執(zhí)行javascript
ws.setJavaScriptEnabled(true);
//設置WebView是否支持縮放
ws.setSupportZoom(true);
//創(chuàng)建WebViewClient對象
wv.setWebViewClient(new WebViewClient());
//創(chuàng)建WebViewChromeClient?
wv.setWebChromeClient(new WebChromeClient());
2.html文件放到main下的assets目錄下,使用的時候采用loadUrl()將“file:///android_asset/myAndroid.html”參數(shù)傳遞進來。
//將assets目錄下的HTML加載到WebView
wv.loadUrl("file:///android_asset/myAndroid.html");
3.WebView有一個addJavascriptInterface()方法,可以獲取從HTML文件中獲取數(shù)據傳遞到android程序中,然后渲染原生控件。
//HTML數(shù)據傳過來在android程序中的數(shù)據接口
wv.addJavascriptInterface(new AsForjs(this),"Android");
final String str="這是一個來自android的數(shù)據";
以上是簡單調用js中不寫入頁面加載完成回調里面的方法,如果想調用這里面的方法,可以將script標簽寫到body最后