JS与Android交互之html页面跳转到Android Activity
16lz
2021-01-23
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 Studio系列(二)使用Android Studio开发/调试整个android系
- android listview继承BaseAdapter,自定义的适配器,getView方法执
- Android开发常用代码片段(三)
- Android Activity四种启动方式
- Android 性能优化之Java(Android)代码优化 (三)
- Android常用代码之普通及系统权限静默安装APK
- android 开发包的离线安装方式