之前的时候做过 Android 和 html 之间的调用,时间已久就有点遗忘了,现在回头看一下,顺便做一下记录。
??Android 调用网页的形式主要是采用控件 webView 来实现的。
1. 首先要布局上一个 WebView 控件
2. 在 Activiry 中获取此控件,并且设置这个控件的属性
- @SuppressLint("SetJavaScriptEnabled") private void initView() { // 加载页面 webView = (WebView) findViewById(R.id.act_html_webview); WebSettings ws = webView.getSettings(); ws.setJavaScriptEnabled(true); ws.setSupportZoom(true); ws.setBuiltInZoomControls(true); ws.setUseWideViewPort(true);// 设置此属性,可任意比例缩放。 // 自适应屏幕 ws.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); ws.setLoadWithOverviewMode(true); String htmlFile = "file:///android_asset/" + table.htmlName; webView.loadUrl(htmlFile); // 在js中调用本地java方法 webView.addJavascriptInterface(new JsInterface(this), "AndroidWebView"); // 添加客户端支持 webView.setWebChromeClient(new WebChromeClient()); }
3. 编写中间类 JsInterface
- private class JsInterface {
- private Context mContext;
- public JsInterface(Context context) {
- this.mContext = context;
- } // 在js中调用window.AndroidWebView.getHtmlValue(name),便会触发此方法。 @JavascriptInterface // 这个声明很重要 如果target 大于等于API 17,则需要加上如下注解 public String getHtmlValue(String value) { Toast.makeText(mContext, value, Toast.LENGTH_SHORT).show(); return value; } @JavascriptInterface public String getAllValues(String value) { htmlValue = saveToDB(value);// 得到网页中填写的数据 Intent intent = new Intent(); intent.putExtra("TABLE_NAME", table.tableName); setResult(102, intent); finish(); return value; } }
4. 编写 Html 文件
- 作 业 笔 录
- 时间: 年 月 日 时 分至 时 分结束 地点: 人物: 记录人: 被询问人姓名: 性别: 年龄: 民族: 文化程度: 职业: 工作单位: 住址: 联系电话:
总结:以上就是 Android 和 JS 互相调用的过程。其中代码中的注释已经注释的很明白了,是在原来的代码的基础之上略加修改。
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: