webview 与 javascript
来源:互联网 发布:杀虫剂毒性 知乎 编辑:程序博客网 时间:2024/06/05 20:37
WebView不但可以运行一段html代码,而且还有一个最重要的特点,就是Webview可以同javascript互相调用。该类实现从android应用中调出个人资料,然后通过javascript显示出来。首先在android中定义一个PersonalData类,用例保存个人资料,并且定义得到这些数据的成员函数,供javascript调用。
package com.android;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class MainActivity extends Activity {
private WebView mWebView;
private PersonalData mPersonalData;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mPersonalData = new PersonalData();
mWebView = (WebView)this.findViewById(R.id.webview);
//设置支持javascript
mWebView.getSettings().setJavaScriptEnabled(true);
//把本类的一个实例添加到javascript的全局对象window中
//这样就使用window.PersonalData来调用它的方法
mWebView.addJavascriptInterface(this, "PersonalData");
//加载网页
mWebView.loadUrl("file:///android_asset/PersonalData.html");
}
//在javascript脚本中调用得到PersonalData对象
public PersonalData getPersonalData(){
return mPersonalData;
}
//javascript脚本中调用显示的资料
class PersonalData{
String mId;
String mName;
String mAge;
String mBolg;
public PersonalData(){
this.mId = "123456";
this.mName = "Android";
this.mAge = "24";
this.mBolg = "http://bbs.csdn.net/";
}
public String getID()
{
return mId;
}
public String getName()
{
return mName;
}
public String getAge()
{
return mAge;
}
public String getBlog()
{
return mBolg;
}
}
这里需要通过addJavascriptInterface(Object obj,String interfacename)方法将一个java对象绑定到一个javascript对象中,javascript对象名就是interfacename,作用域是global,这样便可以扩展javascript的api,获取android数据。
初始化webview之后,在javascript中就可以使用window.Personal.gePersonalData()来取得java对象
PersonalData.html的内容:
<html>
<head><script type="text/javascript" src="test.js"/>
</head>
<body>
<div id = "Personaldata">
<p> Personal Data </p>
</div>
</body>
</html>
window.onload= function(){
//取得java对象var personaldata = window.PersonalData.getPersonalData();
if(personaldata)
{
var Personaldata = document.getElementById("Personaldata");
pnode = document.createElement("p");
//通过java对象访问其数据
tnode = document.createTextNode("ID:" + personaldata.getID());
pnode.appendChild(tnode);
Personaldata.appendChild(pnode);
pnode = document.createElement("p");
tnode = document.createTextNode("Name:" + personaldata.getName());
pnode.appendChild(tnode);
Personaldata.appendChild(pnode);
pnode = document.createElement("p");
tnode = document.createTextNode("Age:" + personaldata.getAge());
pnode.appendChild(tnode);
Personaldata.appendChild(pnode);
pnode = document.createElement("p");
tnode = document.createTextNode("Blog:" + personaldata.getBlog());
pnode.appendChild(tnode);
Personaldata.appendChild(pnode);
}
} 在java代码中也可以直接调用javascript方法,这样就可以互相调用取得数据了,代码如下:webview.loadUrl("javascript:方法名()");为了让WebView从apl文件中加载assets,android sdk提供了一个schema,前缀为"file:///android_asset/"。webview遇到这样的schema,就去当前包中的assets目录中找内容。所以我们使用了如下的代码来加载一个网页: mWebView.loadUrl("file:///android_asset/PersonalData.html"); 转载:http://blog.csdn.net/llbupt/article/details/7369178
- webview 与 javascript
- webview 与 javascript
- javascript 与 webview 交互
- WebView与JavaScript交互
- WebView与JavaScript交互
- WebView与JavaScript交互
- Webview与JavaScript交互
- WebView与Javascript交互
- WebView与JavaScript交互
- android webview 与 javascript交互
- WebView与JavaScript的交互
- Android:WebView与Javascript交互
- WebView与JavaScript的交互
- WebView与JavaScript交互--Android
- Android WebView与JavaScript交互
- android WebView 与javaScript交互
- Android WebView与JavaScript 交互
- WebView与JavaScript的交互
- Python3 - 时间处理与定时任务
- hdu 1024 经典DP 最大m字段和
- 用js,jQuery屏蔽鼠标右与jquery 鼠标右键事件、左键单击事件判定
- 关于IOS 5
- 端午粽香艺更馨-2009CSDN南昌俱乐部聚会成功举办
- webview 与 javascript
- 2009年6月江西IDC服务商排名报告
- asp.net电子商务系统之二
- 算法时间复杂度
- IT:菜鸟 学习:杂谈 篇
- 第五步:ListView和ProgressBar的使用
- Android -singleInstance 关于activity 的存在模式
- 写给研发部成员的四句话
- linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解