经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
Android与HTML-JS交互入门
来源:cnblogs  作者:拖鞋王子猪  时间:2021/1/11 9:09:40  对本文有异议

现在的APP里面会嵌套一些h5酷炫的界面,而我们的app就需要和H5进行交互,下面我们就来看看怎么进行具体的交互。

Webview的基本设置

以下是webview的基本设置

  1. WebSettings setting = mWebView.getSettings();
  2. setting.setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为false
  3. setting.setJavaScriptEnabled(true);//是否允许执行js,默认为false。设置true时,会提醒可能造成XSS漏洞
  4. setting.setSupportZoom(true);//是否可以缩放,默认true
  5. setting.setBuiltInZoomControls(false);//是否显示缩放按钮,默认false
  6. setting.setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式
  7. setting.setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题
  8. setting.setAppCacheEnabled(true);//是否使用缓存
  9. setting.setDomStorageEnabled(true);//DOM Storage
  10. setting.setDatabaseEnabled(true);
  11. setting.setAllowFileAccess(true);
  12. setting.setAppCacheEnabled(true);
  13. setting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); //图片太大
  14. setting.setDatabasePath(getActivity().getApplicationContext().getCacheDir().getAbsolutePath());
  15. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  16. setting.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
  17. }

开启log日志

开启打印web的日志设置,可以看到log信息:

  1. webview.setWebChromeClient(new WebChromeClient() {
  2. public boolean onConsoleMessage(ConsoleMessage cm) {
  3. LogUtils.e(TAG, "打印web日志------"+cm.message() + " -- From line "
  4. + cm.lineNumber() + " of "
  5. + cm.sourceId());
  6. return true;
  7. }
  8. });

添加JavascriptInterface;

  1. mWebView.addJavascriptInterface(new AndroidJavaScript(), "test");

AndroidJavaScript

  1. public class AndroidJavaScript {
  2. @JavascriptInterface
  3. public void testPage() {
  4. LogUtils.e("test", "testPage");
  5. }
  6. }

testPage是和H5约定的名称,以上就是简易的Android和js的交互,具体的细节还需要和H5讨论。

HTML简易代码

里面主要有两个按钮,两个JS方法

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html;charset=gb2312">
  4. <script type="text/javascript">
  5. function AndroidCallJs(){
  6. document.getElementById("content").innerHTML =
  7. "<br\>Android调用了JS的无参函数";
  8. }
  9. function AndroidCallJsParam(arg){
  10. document.getElementById("content").innerHTML =
  11. ("<br\>"+arg);
  12. }
  13. </script>
  14. </head>
  15. <body>
  16. HTML Test <br/>
  17. <h1><div id="content">Test </div></h1>
  18. <br/>
  19. <input type="button" value="点击调用Android代码" onclick="window.android.startFunction()" />
  20. <br/>
  21. <input type="button" value="点击调用Android代码并传递参数" onclick="window.android.startFunction('https://blog.csdn.net/sinat_26397681?spm=1000.2115.3001.5343')" />
  22. </body>
  23. </html>

Android 的调用方式

  1. // 无参数调用 JS的方法
  2. webview.loadUrl("javascript:AndroidCallJs()");
  3. //有参调用HTML js方法
  4. webview.loadUrl("javascript:AndroidCallJsParam(" + "'https://blog.csdn.net/sinat_26397681?spm=1000.2115.3001.5343'" + ")");

欢迎关注公众号 拖鞋王子猪 一起开心起来。

原文链接:http://www.cnblogs.com/wangzizhu/p/14234600.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号