1. WebView加載頁面
webview可以加載本地和網(wǎng)絡(luò)頁面,根據(jù)html的文件位置,有不同的寫法.
mWebView.loadUrl("www.baidu.com");
mWebView.loadUrl("file:///android_res/test.html");
通常情況下,webview會重新設(shè)置webchromeclient,以便在本應(yīng)用內(nèi)實(shí)現(xiàn)頁面跳轉(zhuǎn).
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
mWebView.loadUrl(url);
return true;
}
});
另外,要實(shí)現(xiàn)本文的與h5交互必須允許使用js接口,在實(shí)際開發(fā)中,一般都要加上這一句.
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
2. WebView調(diào)用js方法
調(diào)用js方法有兩種情況: 如果調(diào)用js的無返回值方法, 可以直接使用load方法
mWebView.loadUrl("javascript:do()");
如果要調(diào)用有返回值方法,需要調(diào)用evaluatjavascript方法
mWebView.evaluateJavascript("sum(1,2)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Toast.makeText(ViewPagerGalleryDemoActivity.this, "value = " + value, Toast.LENGTH_SHORT).show();
}
});
js代碼如下:
<script type="text/javascript">
function sum(a,b){
return a+b;
}
function do(){
document.getElementById("p").innerHTML="hello world";
}
</script>
3. js調(diào)用Android方法
需要在Android中定義javascriptinterface接口和聲明
-
首先要添加一個(gè)類和方法,并且用javascriptinterface
public class TestJavaScriptInterface {
@JavascriptInterface
private String testJavaScriptInterface () {
return "hello javascript"
}
} -
打開javascriptinterface給h5的開關(guān)
mWebView.addJavascriptInterface(new TestJavaScriptInterface(), "android"); js代碼如下:
<script type="text/javascript">
function s(){
//調(diào)用Java的back()方法
var result =window.android.testJavaScriptInterface();
document.getElementById("p").innerHTML=result;
}
</script>