1.html界面
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function showToast(toast) {
javascript:control.showToast(toast);
}
function log(msg){
console.log(msg);
}
</script>
</head>
<body>
<input type="button" value="toast"
onClick="showToast('Hello world')" />
</body>
</html>
2.将Html放入Android中的assets下
3.打开JS通道
WebSettings webSettings = mTestWB.getSettings();
webSettings.setJavaScriptEnabled(true);
4.WebView的addJavascriptInterface方法去注入一个我们自己写的interface。
mTestWB.addJavascriptInterface(new JsInterface(), "control");
5.loadUrl
mTestWB.loadUrl("file:///android_asset/index.html");
6.实现JSInterface
public class JsInterface {
//JS中调用Java的方法
@JavascriptInterface
public void showToast(String toast){
Toast.makeText(MainActivity.this, toast, Toast.LENGTH_SHORT).show();
//Java调用JS中的方法
log("show toast success");
}
public void log(final String msg){
mTestWB.post(new Runnable() {
@Override
public void run() {
mTestWB.loadUrl("javascript: log(" + "'" + msg + "'" + ")");
}
});
}
}
7.整体Java Demo
public class MainActivity extends AppCompatActivity {
private WebView mTestWB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTestWB = (WebView) findViewById(R.id.test_wb);
//打开JS通道
WebSettings webSettings = mTestWB.getSettings();
//
webSettings.setJavaScriptEnabled(true);
//WebView的addJavascriptInterface方法去注入一个我们自己写的interface。
mTestWB.addJavascriptInterface(new JsInterface(), "control");
//loadUrl
mTestWB.loadUrl("file:///android_asset/index.html");
}
public class JsInterface {
//JS中调用Java的方法
@JavascriptInterface
public void showToast(String toast){
Toast.makeText(MainActivity.this, toast, Toast.LENGTH_SHORT).show();
//Java调用JS中的方法
log("show toast success");
}
public void log(final String msg){
mTestWB.post(new Runnable() {
@Override
public void run() {
mTestWB.loadUrl("javascript: log(" + "'" + msg + "'" + ")");
}
});
}
}
}