安卓與HTML簡單的交互使用

                                          安卓與HTML簡單交互使用javascript

 實現經過java代碼與HTML的一個互相操做。html

準備工做:java

一、新建Android工程,在佈局文件中添加WebView控件。android

二、準備一個HTML文件,放在src/main/assets文件夾下。web

三、在java中獲得webview,經過loadUrl找到assets下的HTML文件,必須設置webview能使用js(settings.setJavaScriptEnabled(true))加載顯示以下效果:ide

 

簡單的效果實現佈局

1、點擊HTML上sayHello按鈕,能夠獲得java代碼返回的字符串並顯示spa

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點擊時調用方法:code

1 <input type="button" value="sayHello" onclick="sayHello()"/>

 演示效果:htm

2、點擊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()"/>

 3、點擊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" onclick="window.jsObj.excuteHtmlFun()"/>

出現效果就是點擊按鈕調用java的方法,java方法中使用了js的方法,顯示在網頁上。

相關文章
相關標籤/搜索