先写一个网页推荐使用两款js工具
一个是国产的hbuild可以写简单的网页
一个是westorm或者idea工具是国外的
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>testandroid</title>
<script type="text/javascript">
function jsfunc1(){
document.getElementById('content').innerHTML='sss'
console.log('sss')
}
function jsfunc2(arg){
document.getElementById('content').innerHTML=arg
}
</script>
</head>
<body>
<h1><div id="content">内容显示</div></h1>
<br/>
<input type="button" value="点击调用java代码" onclick="window.android.Func1()" />
<br/>
<input type="button" value="点击调用java代码并传递参数" onclick="window.android.Func2('我是帅哥')" />
</body>
</body>
</html>
放在asset文件夹中,里面定义了两个未调用的方法在Android中可以调用
通过loadurl调用js方法
web.loadUrl("javascript:jsfunc1()");
public void click(View view) {
switch (view.getId()){
case R.id.bt1:
web.loadUrl("javascript:jsfunc1()");
break;
case R.id.bt2:
web.loadUrl("javascript:jsfunc2('func2')");
break;
}
}
@SuppressLint("JavascriptInterface")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
web = ((WebView) findViewById(R.id.webview));
web .getSettings().setJavaScriptEnabled(true);
web.loadUrl("file:///android_asset/index.html");
//>17
web.addJavascriptInterface(MainActivity.this,"android");
}
@JavascriptInterface
public void Func1(){
Toast.makeText(MainActivity.this, "f1", Toast.LENGTH_SHORT).show();
}
@JavascriptInterface
public void Func2(String str){
Toast.makeText(MainActivity.this,str, Toast.LENGTH_SHORT).show();
}
上面两个方法使用注解后可在html中调用Android的方法了
注意:
1.window..android这个android必须和Android中的参数android一样,但是可以随便写
2.js调用的方法需要写@Javascriptinterface注解
参考了这篇博客学习的
http://blog.youkuaiyun.com/leejizhou/article/details/50894531/