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