js將一個數組傳給android

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>
相關文章
相關標籤/搜索