Android五分鐘輕松教會(huì)你掌握WebView與js交互

背景:Android API中提供了WebView組件來實(shí)現(xiàn)對html的渲染」炼铮現(xiàn)在HTML5、CSS3武鲁、jS的相關(guān)開發(fā)技術(shù)爽雄,以及數(shù)據(jù)交換格式j(luò)son/XML。Web開發(fā)工程師的技能沐鼠。為了減少對android的過度依賴挚瘟,通常會(huì)在原生的Android 嵌入部分的html了叹谁。

這樣一來就避免不了為js數(shù)據(jù)交互。

我們新建一個(gè)簡單的布局焰檩,只有一個(gè)webview控件

<android:id="@+id/webView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>

我們找到這個(gè)webView锅尘,并加上載本地的main.html,其中main.html存儲在工程文件的assets根目錄下浪腐。

WebView webView = (WebView) findViewById(R.id.webView);
webView.addJavascriptInterface(newJSObject(context), "aikaifa");
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);// 支持js
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
webView.loadUrl("file:///android_asset/main.html");
}
}, 500);
  1. js調(diào)用Android方法

細(xì)心的你應(yīng)該會(huì)注意到上面有個(gè)JSObject類泽谨,沒錯(cuò)吧雹,就是這個(gè)開啟了入口雄卷,前端js 才可以調(diào)用我們Android這邊寫的方法丁鹉。其中的“aikaifa” 可以理解成一個(gè)標(biāo)示揣钦,可以隨便改成你喜歡的冯凹。

我們來看一下JSObject這個(gè)類:

public class JSObject {
 private Context context;
 public JSObject(Context context){
 this.context=context;
}
@JavascriptInterface
 public void goBack({
 Activity activity = (Activity) context;
 activity.finish();
 }
}

該類定義了goBack方法宇姚,注入JS可以調(diào)用空凸。
js如果想要調(diào)用goBack這個(gè)方法呀洲〉蓝海可以這個(gè)aikaifa.goBack() 這樣調(diào)用即可卖词。
這樣前端就可以很方便調(diào)用我們Android這邊的方法了此蜈。

  1. Android調(diào)用JS方法

既然js可以調(diào)用我們的方法裆赵,那我們同樣也調(diào)用js方法

例如我們想調(diào)用js 中g(shù)etName方法战授。

我們可以這樣寫植兰。

public void getTestJS()
{
   Timertimer = new Timer();
   final Handler handler = new Handler(){
   public void handleMessage(Message msg) {
       switch (msg.what) {
          case 1:
         webView.loadUrl("javascript:getName()");
         break;
    }
   super.handleMessage(msg);
  }
};
   timer.schedule(new TimerTask() {
   public void run() {
            Message msg = new Message();
            msg.what = 1;
             handler.sendMessage(msg);
       }
    }, 500, 500);
}

其中g(shù)etName方法是js中的一個(gè)方法楣导,我們可以在需要的地方調(diào)用getTestJS方法就可以了。
這樣WebView與js交互就大致完成了朦促。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末血当,一起剝皮案震驚了整個(gè)濱河市臊旭,隨后出現(xiàn)的幾起案子离熏,更是在濱河造成了極大的恐慌滋戳,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窗怒,居然都是意外死亡扬虚,警方通過查閱死者的電腦和手機(jī)孔轴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來收厨,“玉大人,你說我怎么就攤上這事钦椭”肭唬” “怎么了恭垦?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵番挺,是天一觀的道長玄柏。 經(jīng)常有香客問我右蒲,道長赶熟,這世上最難降的妖魔是什么映砖? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任竹宋,我火速辦了婚禮蜈七,結(jié)果婚禮上莫矗,老公的妹妹穿的比我還像新娘。我一直安慰自己三娩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓦宜,像睡著了一般歉提。 火紅的嫁衣襯著肌膚如雪苔巨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天悼尾,我揣著相機(jī)與錄音未状,去河邊找鬼司草。 笑死,一個(gè)胖子當(dāng)著我的面吹牛搔课,可吹牛的內(nèi)容都是我干的爬泥。 我是一名探鬼主播急灭,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼肾扰,長吁一口氣:“原來是場噩夢啊……” “哼集晚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起亏钩,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎震肮,沒想到半個(gè)月后鲫尊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體马昨,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疙渣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哗伯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片焊刹。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嘉蕾,死狀恐怖儡率,靈堂內(nèi)的尸體忽然破棺而出儿普,到底是詐尸還是另有隱情,我是刑警寧澤勺像,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布篮洁,位于F島的核電站袁波,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏枷颊。R本人自食惡果不足惜夭苗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猾瘸。 院中可真熱鬧须妻,春花似錦、人聲如沸绰更。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尝丐。三九已至远荠,卻和暖如春譬淳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绎秒。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宜咒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像诗轻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子恨樟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容