其實(shí)之前也沒(méi)怎么接觸這塊敬辣,第一是自己開(kāi)發(fā)的時(shí)間并不長(zhǎng),第二是公司開(kāi)發(fā)的項(xiàng)目基本上都是原生的颜说」焊冢快過(guò)年了,覺(jué)得有必要對(duì)今年的一些東西做一些總結(jié)门粪,就以此作為一個(gè)開(kāi)篇吧。
一烹困、js方法中調(diào)用android的方法
首先玄妈,我們新建一個(gè)項(xiàng)目,然后在啟動(dòng)的activity里面(此處為MainActivity)就寫(xiě)一個(gè)按鈕,
布局文件就一個(gè)button就不貼了拟蜻,代碼也很簡(jiǎn)單绎签,就是讓他跳轉(zhuǎn)一個(gè)WebActiviy,如下圖:
其中H5_DIR為我存放靜態(tài)html的路徑(WebActivity中會(huì)用到酝锅,其實(shí)可以不要寫(xiě)在Activity里面诡必,當(dāng)時(shí)隨手寫(xiě)了,就不改了搔扁,請(qǐng)知悉),下圖為文件的目錄結(jié)構(gòu):
WebActivity的頁(yè)面很簡(jiǎn)單爸舒,就是一個(gè)返回按鈕,一個(gè)顯示按鈕稿蹲,還有一個(gè)WebView用來(lái)加載上圖所展示的first.html,如下圖:
加載webview的代碼如下圖扭勉,
如上上圖中展示的返回箭頭是html中所在,這時(shí)如果想要點(diǎn)擊此箭頭返回上一個(gè)activity那就要js調(diào)用android的本地方法苛聘,
首先涂炎,我們通常會(huì)封裝一個(gè)類,用來(lái)做交互设哗,話不多說(shuō)唱捣,直接貼代碼,
接下來(lái)网梢,WebActivity中直接調(diào)用爷光,
webView.addJavascriptInterface(new JavaScriptInterface(this),"Android");
當(dāng)然,你js中也要有相應(yīng)的方法澎粟,
注意的是此處你的Android其實(shí)就是webView.addJavascriptInterface(new JavaScriptInterface(this),"Android")這個(gè)方法中最后定義的這個(gè)Android蛀序,兩者保持一直即可,如此活烙,便完成了js調(diào)用android本地方法
二徐裸、android方法中調(diào)用js的方法
我了解的主要分兩種情況吧,一種是調(diào)用無(wú)返回參數(shù)的啸盏,比如我點(diǎn)擊我WebActivity中的返回按鈕可以調(diào)用js中的back()方法重贺,而其實(shí)我現(xiàn)在back()方法其實(shí)調(diào)用了android本地的finish()方法,所以也可以完成頁(yè)面的返回,調(diào)用方法如下:findViewById(R.id.btnBack).setOnClickListener(new View.OnClickListener() {
@Override
? ? public void onClick(View v) {
webView.loadUrl("javascript:back()");
}
});
還有一種是調(diào)用有返回參數(shù)的回懦,首先在我的first.html中添加一個(gè)簡(jiǎn)單的方法气笙,比如:function num(){
return 10;
}
然后我們?cè)赪ebActivity中的調(diào)用如下:
findViewById(R.id.btnShow).setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
? ? public void onClick(View v) {
webView.evaluateJavascript("num()",new ValueCallback() {
@Override
? ? ? ? ? ? public void onReceiveValue(String value) {
Toast.makeText(WebActivity.this, value, Toast.LENGTH_SHORT).show();
}
});
}
});
直接可以用土司彈出10,如此便完成了android對(duì)js方法的調(diào)用怯晕。
第一次寫(xiě)潜圃,寫(xiě)的有點(diǎn)亂,多多見(jiàn)諒舟茶!需要源碼或者有什么問(wèn)題的可以在下面留言谭期,大家互相交流堵第,我的開(kāi)發(fā)時(shí)間也很短,希望大家可以共同進(jìn)步!