JS与Android交互之html页面跳转到Android(安卓)Activity
16lz
2021-12-04
Android通过webview和html进行交互
先来看看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" />head><body><input type="button" value="Say hello" onClick="goHomepage.showToast()" />body>html>
再来看看Android 端代码
WebSettings ws = webView.getSettings(); ws.setJavaScriptEnabled(true);//开启JavaScript支持 ws.setLoadWithOverviewMode(true); ws.setUseWideViewPort(true); webView.setHorizontalScrollBarEnabled(false);//水平不显示 滚动条 webView.setVerticalScrollBarEnabled(false); //垂直不显示 webView.addJavascriptInterface(this, "goHomepage"); // 开启DOM缓存,开启LocalStorage存储(html5的本地存储方式) webView.getSettings().setDomStorageEnabled(true); webView.requestFocusFromTouch(); webView.requestFocus(); ws.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // 适应屏幕,内容自动缩放 webView.loadUrl("file:///android_asset/web_dten/test.html");
@JavascriptInterface public void showToast() { startActivity(new Intent(this, HomeActivity.class)); finish(); }
以上方式只是适合API16以上,那么API16下是怎么处理的呢?看代码
webView.addJavascriptInterface(new ToActivityInterface(WebviewActivity.this), "goHomepage");public class ToActivityInterface { private Context context; private ToActivityInterface(Context context) { this.context = context; } @JavascriptInterface publicvoid showToast() { startActivity(new Intent(context, HomeActivity.class)); finish(); } }
其它地方不变,只是这个接口得自己实现,由于安全问题,所以API16之后,google已经帮我们封装了。
注意:需要调用的方法千万别写成私有的:private
更多相关文章
- 转:Android(安卓)开发技巧杂集
- Android所有系统资源图标android.R.drawable查看
- ANDROID获取设备ID、型号及其它信息
- Android移动操作系统源代码
- android 网络 post get
- 学习Android(安卓)必备 实例大集合
- 善用Android预定义样式
- android知识链接汇总(3)
- Android(安卓)UI开发第一篇――android的九宫格式实现