安卓与HTML简单的交互使用
????????????????????????????????????????? 安卓與HTML簡單的交互使用
?實(shí)現(xiàn)通過java代碼與HTML的一個(gè)互相操作。
準(zhǔn)備工作:
1、新建Android工程,在布局文件中添加WebView控件。
2、準(zhǔn)備一個(gè)HTML文件,放在src/main/assets文件夾下。
3、在java中得到webview,通過loadUrl找到assets下的HTML文件,必須設(shè)置webview能使用js(settings.setJavaScriptEnabled(true))加載顯示如下效果:
?
簡單的效果實(shí)現(xiàn)
一、點(diǎn)擊HTML上sayHello按鈕,可以得到j(luò)ava代碼返回的字符串并顯示
1 mWvShow.loadUrl("file:///android_asset/jsandjava.html"); 2 mWvShow.addJavascriptInterface(new JsTest(), "jsObj");//將java中類映射到j(luò)s中 jsObj為該類的一個(gè)對象名 JsTest是一個(gè)內(nèi)部類,其中定義的方法與js中button調(diào)用的方法名一致。 1 @JavascriptInterface 2 public String sayHello() { 3 return "你好!!!"; 4 } js中封裝的sayHello()方法:1 function sayHello(){ 2 var str = window.jsObj.sayHello(); 3 document.getElementById("id_input").value = str; 4 } var str = window.jsObj.sayHello();
通過window得到jsObj對象,通過其調(diào)用該類中的方法sayHello(),就可獲取java方法中返回的字符串。
在js的button點(diǎn)擊時(shí)調(diào)用方法:
1 <input type="button" value="sayHello" onclick="sayHello()"/>?演示效果:
二、點(diǎn)擊HTML上showAndroidButton按鈕,可以和activiy交互,讓其進(jìn)行一些UI的操作
因?qū)ο笥成溥^一次,不需再次映射。在java中定義showAndroidButton()方法,同樣方法名需和js中button調(diào)用的一致,即js調(diào)用的方法就是通過映射過去的對象調(diào)用的java里的方法,所以兩者方法名必須一致。因?yàn)?span style="color:#000000;">showAndroidButton()是在js中通過映射的對象來調(diào)用,不能直接更新UI需要通過runOnUiThread的方法來更新UI。
1 @JavascriptInterface 2 public void showAndroidButton(){ 3 runOnUiThread(new Runnable() { 4 @Override 5 public void run() { 6 btn_test.setVisibility(View.VISIBLE); 7 } 8 }); 9 }js封裝的方法:
通過對象調(diào)用類中的方法。
1 function showAndroidButton(){ 2 window.jsObj.showAndroidButton(); 3 }HTML中button的定義,調(diào)用showAndroidButton()方法:
<input type="button" style="height: 40px " value="showAndroidButton" onclick="showAndroidButton()"/>?三、點(diǎn)擊excuteHtmlFun按鈕,調(diào)用java內(nèi)的excuteHtmlFun()方法,方法內(nèi)調(diào)用js定義的showFromHtml(param)方法;
?
java內(nèi)部類中的excuteHtmlFun()方法,方法內(nèi)加載Url:
1 @JavascriptInterface 2 public void excuteHtmlFun(){ 3 runOnUiThread(new Runnable() { 4 @Override 5 public void run() { 6 mWvShow.loadUrl("javascript: showFromHtml('我很好!')");//調(diào)用js內(nèi)的showFromHtml(param)方法 7 } 8 }); 9 }js的showFromHtml(param)方法:
?
function showFromHtml( param ){document.getElementById("id_input").value = "Java call Html : " + param;}?
?
button內(nèi)直接調(diào)用java類中的方法
1 <input type="button" style="height: 40px " value="excuteHtmlFun" οnclick="window.jsObj.excuteHtmlFun()"/>出現(xiàn)效果就是點(diǎn)擊按鈕調(diào)用java的方法,java方法中使用了js的方法,顯示在網(wǎng)頁上。
?
轉(zhuǎn)載于:https://www.cnblogs.com/lwandxcq/p/5668038.html
總結(jié)
以上是生活随笔為你收集整理的安卓与HTML简单的交互使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016年5月30日上午(传智Boots
- 下一篇: django前端到后端一次简单完整的请求