Examples_08_07
http://yarin.iteye.com/?page=4
Activity01.java
package com.yarin.android.Examples_08_07; import android.app.Activity;
import android.os.Bundle;
import android.webkit.JavascriptInterface;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebView; public class Activity01 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.WebView01);
// 设置支持JavaScript
mWebView.getSettings().setJavaScriptEnabled(true);
// 把本类的一个实例添加到js的全局对象window中,
// 这样就可以使用window.PersonalData来调用它的方法
mWebView.addJavascriptInterface(this, "PersonalData");
// 如果不设置这个,JS代码中的按钮会显示,但是按下去却不弹出对话框
// Sets the chrome handler. This is an implementation of WebChromeClient
// for use in handling JavaScript dialogs, favicons, titles, and the
// progress. This will replace the current handler.
mWebView.setWebChromeClient(new WebChromeClient() { @Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
// TODO Auto-generated method stub
return super.onJsAlert(view, url, message, result);
} });
// 加载网页
// mWebView.loadUrl("file:///android_asset/PersonalData_new.html");
mWebView.loadUrl("file:///android_asset/PersonalData.html");
} // 在js脚本中调用得到PersonalData对象
@JavascriptInterface
public PersonalData getPersonalData() {
return mPersonalData;
} // js脚本中调用显示的资料
class PersonalData {
String mID;
String mName;
String mAge;
String mBlog; public PersonalData() {
this.mID = "123456789";
this.mName = "Android";
this.mAge = "100";
this.mBlog = "http://yarin.javaeye.com";
} public String getID() {
return mID;
} public String getName() {
return mName;
} public String getAge() {
return mAge;
} public String getBlog() {
return mBlog;
}
}
}
PersonalData_new.html
<html>
<head>
<script type="text/javascript">
function showAndroidToast(toast)
{
var personaldata_new = PersonalData.getPersonalData();
alert(personaldata_new);
var personaldata = window.PersonalData.getPersonalData();
if(personaldata)
{
var Personaldata = document.getElementById("Personaldata");
pnode = document.createElement("p");
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);
}
} function myFunction(){
console.log("Write a new Line");//调试信息
alert("Hello World!");
} </script>
</head>
<body>
<div id = "Personaldata">
<p> Personal Data </p>
<button onclick="myFunction()">click here!</button>
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
</div>
</body>
</html>
PersonalData.html
<html>
<head>
<script type="text/javascript">
function onload(){
var personaldata = window.PersonalData.getPersonalData();
if(personaldata)
{
var Personaldata = document.getElementById("Personaldata");
pnode = document.createElement("p");
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);
}
}
</script>
</head>
<body onload="javascript:onload()">
<div id = "Personaldata">
<p> Personal Data </p>
</div>
</body>
</html>
或者
<html>
<head>
<script type="text/javascript" src="test2.js">
</script>
</head>
<body onload="javascript:myFunction()">
<div id = "Personaldata">
<p> Personal Data </p>
<button onclick="myFunction()">click here!</button>
</div>
</body>
</html>
test2.js
function myFunction(){
var personaldata = window.PersonalData.getPersonalData();
if(personaldata)
{
var Personaldata = document.getElementById("Personaldata");
pnode = document.createElement("p");
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);
}
}
或者
<html>
<head>
<script type="text/javascript" src="test2.js">
</script>
</head>
<body><!-- onload="javascript:myFunction()"-->
<div id = "Personaldata">
<p> Personal Data </p>
<button onclick="myFunction()">click here!</button>
</div>
</body>
</html>
test2.js
window.onload= function(){
var personaldata = window.PersonalData.getPersonalData();
if(personaldata)
{
var Personaldata = document.getElementById("Personaldata");
pnode = document.createElement("p");
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);
}
}
<script type="text/javascript" src="test2.js"/>android2.2兼容,但是android4.1.2不兼容。下面的才兼容android4.1.2
<script type="text/javascript" src="test2.js"></script>
4.2及以上版本必须在js调用的java方法加上@JavascriptInterface,4.1及以下版本不用加上注释。
Examples_08_07的更多相关文章
- 使用WebView出现web page not available
很有可能是没有设置权限,所以不能浏览相应的URL,设置如下: 在AndroidManifest.xml中添加 <uses-permission android:name="androi ...
随机推荐
- eval函数:\的应用
<?php $string = "beautiful"; $time = "winter"; $str = 'This is a $string $tim ...
- php的session实现
对于两次http请求,如果第一次http请求的重要数据要被第二次请求获取,办法是将第一次http请求数据保存下来,保存的办法很多,大体上有使用数据库,缓存,文件等等,那么php中的session实现实 ...
- [Python笔记]第二篇:运算符、基本数据类型
本篇主要内容有:运算符 基本数据类型等 一.运算符 1.算术运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 6.身份运算 7.位运算 8.运算符优先级 二.基本数据类型 1.整数:int ...
- hdu1405 第六周J题(质因数分解)
J - 数论,质因数分解 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Desc ...
- UvaLive 6661 Equal Sum Sets (DFS)
Let us consider sets of positive integers less than or equal to n. Note that all elements of a set a ...
- 查看 yum 安装软件包的路径
yum:列出已安装的安装包 [root@localhost ~]# yum list | grep mysql akonadi-mysql.x86_64 1.9.2-4.el7 base apr-ut ...
- select查询的性能
为什么忘记commit也会造成select查询的性能问题 今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据, ...
- Tomcat 9.0安装配置
本文转自:http://blog.sina.com.cn/s/blog_15126e2170102w5o8.html 一.JDK的安装与配置 1.从官网下载jdk,注意是jdk不是jre.最好从官网下 ...
- android.os.NetworkOnMainThreadException 在4.0之后谷歌强制要求连接网络不能在主线程进行访问
谷歌在4.0系统以后就禁止在主线程中进行网络访问了,原因是: 主线程是负责UI的响应,如果在主线程进行网络访问,超过5秒的话就会引发强制关闭, 所以这种耗时的操作不能放在主线程里.放在子线程里,而子线 ...
- Java中堆内存(heap)和栈内存(stack)的区别
在Java代码中,常常会使用到这样的类的声明实例化: Person per = new Person(); //这其实是包含了两个步骤,声明和实例化 Person per = null; //声明一个 ...