1.布局layout
布局中拖一个WebView控件
<WebView
android:id="@+id/wv_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp" />
2.创建html网页
新建assets文件夹,与res同目录,新建about.html
<html>
<head>
<meta charset="utf-8" />
<title>关于</title>
</head>
<body>
<h1>关于我们</h1>
<h3 id="info"></h3>
<button onclick="web2Android()">我找定制开发</button>
</body>
<script>
/**
* 安卓调用web方法
*/
function android2Web(str){
document.getElementById("info").innerHTML = str;
}
/**
* web调用安卓方法
*/
function web2Android() {
webobj.web2Android('我找定制开发');
}
</script>
</html>
3.写Activity方法实现交互
@SuppressLint({"JavascriptInterface", "SetJavaScriptEnabled"})
private void initViews() {
webView = findViewById(R.id.wv_webview);
//设置支持js
webView.getSettings().setJavaScriptEnabled(true);
webView.requestFocus();
webView.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
//设置背景色
webView.setBackgroundColor(Color.parseColor("#FFFFFFFF"));
//设置本地网页/线上网页
webView.loadUrl("file:///android_asset/about.html");
webView.addJavascriptInterface(new JsInterface(),"webobj");
//设置web客户端,用于监听客户端事件
webView.setWebViewClient(new WebViewClient() {
//点击链接后不跳转其他浏览器
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
// 如果不需要其他对点击链接事件的处理返回true,否则返回false
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
//TODO:打开时显示加载框
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
android2Web();
//TODO:加载完成关闭加载框
}
});
}
/**
* js接口,用于提供web页面调用方法
*/
private class JsInterface {
@JavascriptInterface
public void web2Android(String intent) {
Log.i("JsInterface", intent);
Toast.makeText(MainActivity.this, "没问题,私聊我", Toast.LENGTH_LONG).show();
}
}
/**
* 模拟安卓调用web页面方法
*/
private void android2Web() {
webView.post(() -> webView.loadUrl(
"javascript:android2Web('济南研发工作室,承接Java web、安卓、混开App、小程序开发,物联网开发、技术问题解决')"));
}