1,在android中給webview設置一個供js調用的java類,並起一個名字供js用;如:
this.appView.addJavascriptInterface(new JavaScripdtObject(), "android");
2,建立這個類,並定義一些方法,這些方法是給js調用的:如:
public class JavaScripdtObject {
@JavascriptInterface
public void runAndroidMethod(String str) {
Intent intent = new Intent(MainActivity.this, TestActivity.class);
//將js傳過來的這個值傳給這個頁面
Bundle bundle = new Bundle();
bundle.putString("str", str);
intent.putExtras(bundle);
MainActivity.this.startActivity(intent);
Toast.makeText(MainActivity.this, "被js調用"+str, Toast.LENGTH_SHORT)
.show();
}
@JavascriptInterface//在API 11及以上須要加這個註解
public void runAndroidMethodArr(String strArr[]){
StringBuffer strBuffer = new StringBuffer();
for (int i = 0; i < strArr.length; i++) {
strBuffer.append(strArr[i]);
}
String str = strBuffer.toString();
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}
}
3,js代碼:
<!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width,user-scalable=no" />
<meta name="MobileOptimized" content="240" />
<meta http-equiv="pragma" />
<meta charset="utf-8" />
<title>獲取節點數據的操做</title>
</head>
<body>
<font color="blue" size="4">獲取節點</font>
<font color="red" size="4">數據</font>
<hr />
<!-- 換行 -->
<input type="text" " name="user" maxlength="10"
style="height: 20px; width: 80px; font-size: 12px; color: #F09" />
<input type="button" value="點擊我" onClick="onClick()"
style="color: #0F6" />
<script type="text/javascript">
function onClick() {
//定義一個數據
var arr = [];
//一,獲取輸入框中的節點數據
//獲得的是一個數據,一堆元素,由於name會有重複的;弱類型語言,就用var來接受
//var nodes = document.getElementsByName("user");
//var str = nodes[0].value;
//調用android方法,js頁面的值傳給android
//android.runAndroidMethod(str);//調用android的方傳一個字符串
//二,獲取其餘節點的數據
var nodes = document.getElementsByTagName("span");
for ( var i = 0; i < nodes.length; i++) {
var array_element = nodes[i];//拿到節點對象
arr[i] = array_element.innerText;//再經過節點對象獲取裏面的數據
}
android.runAndroidMethodArr(arr);//調用android的方法,將一個數組傳過去
}
</script>
<br />
<br />
<span>這是一個span區域</span>
<br />
<span>這是第二個span區域</span>
</body>
</html>