JavaScript 與 Android 交互

前言:隨著前端技術(shù)越來越火敢朱。許多app中不在是簡單的Android原生應用功舀,加入了很多web頁令漂。通過android的webView加載一個html挂据。并且我們通常的一些落地頁都是用html顯示的。那么對于一些具有特殊功能的落地頁泡躯。比如具有引導注冊功能的巫击,用戶點擊落地頁之后跳轉(zhuǎn)App的注冊頁面,或者登錄頁面精续。那么坝锰,這就需要html和Android原生進行交互,相互調(diào)用重付。

原理分析

android調(diào)用javascript方法:

直接通過webView.loadUrl("JavaScript:show('"+et.getText().toString()+"')");,其實就是直接通過loadUrl()方法顷级,傳入javascropt:+方法名。

javascript調(diào)用Android方法

(1)定義一個對象确垫,包含js需要調(diào)用方法的定義和實現(xiàn)弓颈。

(2)webView.addJavascriptInterface(new Object(), "obj");傳入。

(3)js調(diào)用删掀。

使用方法

(1)定義Android對象

首先需要定義一個類翔冀,該類主要用于定義一些方法(接口),以便js調(diào)用披泪。

private? classObject {

@JavascriptInterface

public void intent2Activity(String activity){

if(activity.equals("login")){

Intent intent =new Intent(MainActivity.this,LoginActivity.class);

startActivity(intent);

}

}

@JavascriptInterface

public void showDialog(String str){

AlertDialog dialog =newAlertDialog.Builder(MainActivity.this)

.setTitle("消息")

.setMessage(str)

.setPositiveButton("確定",null)

.setNegativeButton("取消",null)

.create();

dialog.show();

}

}

定義了兩個方法纤子,一個是跳轉(zhuǎn)activity的方法,另一個是顯示消息的方法。

注意:方法前一定要加上注解@JavascriptInterface控硼,不然會沒有效果泽论。

在Activity中加入webView,并查找控件卡乾,進行一些初始化操作

@SuppressLint("JavascriptInterface")

public voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

et = ((EditText) findViewById(R.id.et));

//加載頁面

webView = (WebView) findViewById(R.id.webView);

//允許JavaScript執(zhí)行

webView.getSettings().setJavaScriptEnabled(true);

webView.getSettings().setDefaultTextEncodingName("utf-8");

// 添加一個對象, 讓JS可以訪問該對象的方法

webView.addJavascriptInterface(newObject(),"obj");

//找到Html文件翼悴,也可以用網(wǎng)絡(luò)上的文件

webView.loadUrl("file:///android_asset/index.html");

}

webView.addJavascriptInterface(new Object(), "obj");相當于向html中傳入了定義的接口對象,對象名為obj幔妨。

定義Html對象

因為我用的是android studio鹦赎,所以在main目錄下創(chuàng)建目錄assets,并創(chuàng)建文件index.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末误堡,一起剝皮案震驚了整個濱河市古话,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌埂伦,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件思恐,死亡現(xiàn)場離奇詭異沾谜,居然都是意外死亡,警方通過查閱死者的電腦和手機胀莹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門基跑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人描焰,你說我怎么就攤上這事媳否。” “怎么了荆秦?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵篱竭,是天一觀的道長。 經(jīng)常有香客問我步绸,道長掺逼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任瓤介,我火速辦了婚禮吕喘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刑桑。我一直安慰自己氯质,他們只是感情好,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布祠斧。 她就那樣靜靜地躺著闻察,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜓陌,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天觅彰,我揣著相機與錄音,去河邊找鬼钮热。 笑死填抬,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的隧期。 我是一名探鬼主播飒责,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼仆潮!你這毒婦竟也來了宏蛉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤性置,失蹤者是張志新(化名)和其女友劉穎拾并,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹏浅,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡嗅义,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了隐砸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片之碗。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖季希,靈堂內(nèi)的尸體忽然破棺而出褪那,到底是詐尸還是另有隱情,我是刑警寧澤式塌,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布博敬,位于F島的核電站,受9級特大地震影響峰尝,放射性物質(zhì)發(fā)生泄漏冶忱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一境析、第九天 我趴在偏房一處隱蔽的房頂上張望囚枪。 院中可真熱鬧,春花似錦劳淆、人聲如沸链沼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽括勺。三九已至缆八,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疾捍,已是汗流浹背奈辰。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乱豆,地道東北人奖恰。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像宛裕,于是被迫代替她去往敵國和親瑟啃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

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