把网页文件放在main文件夹下assets里面
web部分代码:
<!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>调用Android组件测试</title>
<script type="text/javascript">
function show(info){
document.getElementById("shows").innerHTML = info;
}
</script>
</head>
<body>
<b>测试</b>
<br />
<button onClick="window.hello.javaMethod('param')">启动hello world Activity</button>
<br />
<hr color="#99FF00"/>
<button onClick="window.hello.showAndroid()">显示android内容</button>
<br />
<textarea id= "shows" cols="20" rows="10"> 暂无记录 </textarea>
<br />
</body>
</html>
Android部分代码:
public class MainActivity extends Activity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//资源ID
webView = (WebView) findViewById(R.id.web);
//记载页面
webView.loadUrl("file:///android_asset/Untitled1.html");
//支持js交互
webView.getSettings().setJavaScriptEnabled(true);
/**
* 1.JavaScript对象
* 2.别名 在交互是 htmel中会使用
*
*/
webView.addJavascriptInterface(this, "test");
//设置编码格式
webView.getSettings().setDefaultTextEncodingName("utf-8");
webView.setWebChromeClient(new WebChromeClient(){
//得到页面的标题
@Override
public void onReceivedTitle(WebView view, String title) {
// TODO Auto-generated method stub
super.onReceivedTitle(view, title);
}
//得到当前页面加载的进度
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
super.onProgressChanged(view, newProgress);
}
});
webView.setWebViewClient(new WebViewClient(){
//页面正在加载
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
//页面加载完成
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
}
});
}
public void butCallJsMethod(View v){
//交互 Android向Html传值
webView.loadUrl("javascript:androidCallJsMethod('杨栓国民老公')");
}
//接受html传来的值
@JavascriptInterface //注解 必须要加
public void sayHello(String name){
Toast.makeText(MainActivity.this, name, 1).show();
}
}