android和js之间的简单交互

本文介绍了一个使用PhoneGap的示例,展示了如何通过JavaScript调用Android本地代码,并实现从Android回调JavaScript的过程。示例中详细说明了所需的主要代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,android代码:(我这里用的是phonegap)

package com.example.com.yjb.phonegap.test;

import android.os.Bundle;
import android.view.Window;
import android.webkit.JavascriptInterface;
import android.widget.Toast;

import com.phonegap.DroidGap;
/**
 * 这个例子是:先用js代码调用android代码,然后android在回调js代码
 * @author YUJIAN
 *
 */
public class MainActivity extends DroidGap {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		super.onCreate(savedInstanceState);
		this.loadUrl("file:///android_asset/www/index.html");
		
		//给js设置调用的方法
		this.appView.addJavascriptInterface(new JavaScripdtObject(), "android");
		
	}
	
	/**
	 * 供js调用的对象方法
	 * 
	 * @author YUJIAN
	 * 
	 */
	public class JavaScripdtObject {

		@JavascriptInterface
		public void runAndroidMethod(String str) {
			
			Toast.makeText(MainActivity.this, "被js调用"+str, Toast.LENGTH_SHORT)
					.show();
			
			
			//android调用js代码
			MainActivity.this.appView.loadUrl("javascript:getNode3()");
		}
	}

}
2,js代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>木德html5</title>


</head>

<body>


<!--

document:代表的是标记型文档对象。

获取该对象的目的其实就是为了获取文档中的内容(标签,数据,属性...)
而且拿到都是对象。这个也称为节点。


注意:按照这个思想,就可以明确,只要想要操作标记型文档(html,xml),第一步就是获取该文档的对象,document。

只有拿个这个对象,才可以对标记型文档中的内容进行操作。


通过document对象获取节点的方式。

getElementById 获取对 ID 标签属性为指定值的第一个对象的引用。 
			就是通过标签中的属性获取该标签节点对象。返回的就是该标签对象。
            注意:id属性值要保证页面唯一,如果不唯一,获取到的是第一个id所属的节点。
            
            
getElementsByName 根据 NAME 标签属性的值获取对象的集合。
			就是通过标签中的name属性来获取节点,但是name属性值容易重复,比如单选框的性别。
            所以获取到的节点不唯一,那么这个方法返回的是一个节点数组。
             
getElementsByTagName 获取基于指定元素名称的对象集合。
			 就是根据标签的名称来获取节点,名称会重复,所以该方法返回的是该名称节点数组。
             
-->


<script type="text/javascript">
function getNode3()
{
	var nodes = document.getElementsByTagName("span");	
	for(var x=0;x<nodes.length; x++)
	{
		alert(nodes[x].innerText);
	}
}

//获取指定区域表格中的span标签
function getNode4()
{
	var str = "javascrip木德";
	
	//调用android代码
	window.android.runAndroidMethod(str);
}
</script>


<input type="button" value="获取页面中的节点" onclick="getNode4()" />


	<div id="divid" >这是一个div节点</div>
	<input type="text" name="user" />
	<span>这是一个span区域</span>
	<span>这是第二个span区域</span>
	<table>
		<tr>
	    	<td><span>这是单元格中的span</span></td>
	    </tr>
	</table>
</body>
</html>

转载于:https://my.oschina.net/u/936286/blog/161636

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值