{"id":1640,"date":"2016-07-22T16:39:00","date_gmt":"2016-07-22T08:39:00","guid":{"rendered":"https:\/\/ai.zhousir.top\/?p=1640"},"modified":"2026-08-18T12:58:50","modified_gmt":"2026-08-18T04:58:50","slug":"android-webview-%e7%9b%b8%e5%85%b3%e7%9f%a5%e8%af%86","status":"publish","type":"post","link":"https:\/\/ai.zhousir.top\/?p=1640","title":{"rendered":"Android WebView \u76f8\u5173\u77e5\u8bc6"},"content":{"rendered":"<section id=\"wenyan\" style=\"font-family: system-ui, 'Apple Color Emoji', 'Segoe UI', 'Segoe UI Symbol', 'Noto Sans', Roboto, sans-serif; line-height: 1.75; font-size: 16px; color: #000000; caret-color: #000000;\" data-provider=\"WenYan\">\n<blockquote style=\"margin: 20px 0px; display: block; font-size: 0.9em; overflow: auto; border-left: 3px solid #ef7060; color: #6a737d; padding: 10px 10px 10px 20px; background: #fff9f9;\">\n<p style=\"margin: 1em 0px;\">WebView \u7528\u6765\u663e\u793a HTML\uff0c\u5bf9 HTML5 \u4e5f\u53cb\u597d\uff0c\u63a5\u8fd1 iOS \u7684 UIWebView\u3002\u5b83<strong>\u4e0d\u9700\u8981<\/strong>\u4ec5\u4ec5\u56e0\u4e3a\u300c\u7528\u4e86 WebView\u300d\u5c31\u7533\u8bf7\u7f51\u7edc\u6743\u9650\uff1a\u53ea\u6709\u771f\u6b63\u8bbf\u95ee\u7f51\u7edc\u624d\u4f1a\u62a5 Web page not available\uff1b\u52a0\u8f7d assets \u6216 HTML \u5b57\u7b26\u4e32\uff0c\u6ca1\u6709 INTERNET \u4e5f\u4e0d\u4f1a\u9519\u3002<\/p>\n<\/blockquote>\n<hr>\n<h2 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em; border-bottom: 2px solid #ef7060; display: flex;\"><span style=\"display: inline-block; font-weight: bold; background: #ef7060; color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;\">\u4e00\u3001WebView \u57fa\u7840\u4f7f\u7528<\/span><\/h2>\n<h3 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em;\">1. \u5e03\u5c40\u4e0e Settings<\/h3>\n<p style=\"margin: 1em 0px;\">xml \u4e2d\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">&lt;WebView\n    android:id=\"@+id\/blog_detail_webview\"\n    android:layout_width=\"fill_parent\"\n    android:layout_height=\"wrap_content\"\n    android:background=\"#FFFFFF\"\/&gt;<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">Activity \u4e2d\u5c5e\u6027\u4e0d\u8d70 xml\uff0c\u800c\u662f <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">getSettings()<\/code>\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">mWebView = (WebView)findViewById(R.id.blog_detail_webview);\nmWebView.getSettings().setJavaScriptEnabled(false);\nmWebView.getSettings().setSupportZoom(false);\nmWebView.getSettings().setBuiltInZoomControls(false);\nmWebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);\nmWebView.getSettings().setDefaultFontSize(18);<\/code><\/pre>\n<ul style=\"padding-left: 1rem; margin-left: 1rem; font-size: 0.9rem; list-style-type: disc;\">\n<li>\n<section><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">setJavaScriptEnabled(false)<\/code>\uff1a\u4e0d\u652f\u6301 JS\u3002\u8981 Java \u548c JS \u4ea4\u4e92\uff0c\u6216\u9875\u9762\u672c\u8eab\u4f9d\u8d56 JS\uff0c\u6539\u6210 true\u3002<\/section>\n<\/li>\n<li>\n<section><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">setSupportZoom(false)<\/code>\uff1a\u662f\u5426\u652f\u6301\u7f29\u653e\uff0c\u9ed8\u8ba4 true\u3002<\/section>\n<\/li>\n<li>\n<section><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">setBuiltInZoomControls(false)<\/code>\uff1a\u662f\u5426\u663e\u793a\u7f29\u653e\u63a7\u4ef6\uff0c\u9ed8\u8ba4 false\u3002<\/section>\n<\/li>\n<li>\n<section><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">setDefaultFontSize(18)<\/code>\uff1a\u9ed8\u8ba4\u5b57\u4f53\uff0c\u9ed8\u8ba4 16\uff0c\u6709\u6548\u533a\u95f4 1\u201372\u3002<\/section>\n<\/li>\n<\/ul>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN)<\/code> \u4e0d\u5e38\u7528\u3002\u666e\u901a\u7f51\u9875\u5e38\u51fa\u73b0\u6a2a\u5411\u6eda\u52a8\u6761\uff0c\u9605\u8bfb\u5f88\u522b\u626d\u3002<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">LayoutAlgorithm<\/code> \u63a7\u5236 HTML \u5e03\u5c40\uff0c\u4e09\u79cd\uff1a<\/p>\n<table style=\"border-collapse: collapse; margin: 1.4em auto; max-width: 100%; table-layout: fixed; text-align: left; overflow: auto; display: table; overflow-wrap: break-word; word-break: break-all;\" width=\"817\">\n<thead>\n<tr>\n<th style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top; font-weight: bold; background-color: #fff9f9; color: #ef7060;\">\u53d6\u503c<\/th>\n<th style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top; font-weight: bold; background-color: #fff9f9; color: #ef7060;\">\u6548\u679c<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">NORMAL<\/code><\/td>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">\u6b63\u5e38\u663e\u793a\uff0c\u6ca1\u6709\u6e32\u67d3\u53d8\u5316<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">SINGLE_COLUMN<\/code><\/td>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">\u628a\u6240\u6709\u5185\u5bb9\u653e\u5230\u4e0e WebView \u7b49\u5bbd\u7684\u4e00\u5217<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">NARROW_COLUMNS<\/code><\/td>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">\u53ef\u80fd\u7684\u8bdd\uff0c\u5217\u5bbd\u4e0d\u8d85\u8fc7\u5c4f\u5e55\u5bbd\u5ea6<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em;\">2. \u52a0\u8f7d\u5185\u5bb9<\/h3>\n<p style=\"margin: 1em 0px;\">\uff081\uff09\u52a0\u8f7d assets \u91cc\u7684\u672c\u5730\u7f51\u9875\uff0c\u5f62\u5982\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">mWebView.loadUrl(\"file:\/\/\/android_asset\/html\/test1.html\");<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\uff082\uff09\u52a0\u8f7d\u8fdc\u7a0b\u7f51\u9875\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">mWebView.loadUrl(\"http:\/\/www.google.com\");<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\uff083\uff09\u7247\u6bb5\u800c\u4e0d\u662f\u5b8c\u6574\u7f51\u9875\u65f6\uff0c\u7528 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">loadData<\/code> \u6216\u66f4\u5e38\u7528\u7684 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">loadDataWithBaseURL<\/code>\u3002\u5b8c\u6574\u7ad9\u70b9\u76f4\u63a5\u7528\u6d4f\u89c8\u5668\u5373\u53ef\uff0c\u4e0d\u5fc5\u505a\u6210\u5e94\u7528\u3002<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)\n\nloadDataWithBaseURL()\u6bd4loadData()\u591a\u4e24\u4e2a\u53c2\u6570\uff0c\u53ef\u4ee5\u6307\u5b9aHTML\u4ee3\u7801\u7247\u6bb5\u4e2d\u76f8\u5173\u8d44\u6e90\u7684\u76f8\u5bf9\u6839\u8def\u5f84\uff0c\u4e5f\u53ef\u4ee5\u6307\u5b9a\u5386\u53f2Url\uff0c\u5176\u4f59\u4e09\u4e2a\u53c2\u6570\u76f8\u540c\u3002<\/code><\/pre>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">baseUrl<\/code> \u6307\u5b9a data \u91cc\u8d85\u94fe\u63a5\u3001\u56fe\u7247\u76f8\u5bf9\u8def\u5f84\u7684\u57fa\u51c6\u3002\u5f88\u591a\u7ad9\u70b9\u7528\u76f8\u5bf9\u5730\u5740\uff0c\u6ca1\u6709 baseUrl \u5c31\u52a0\u8f7d\u4e0d\u5230\u8d44\u6e90\u3002<\/p>\n<p style=\"margin: 1em 0px;\">\u4f8b\u5b50\uff08\u76f8\u5bf9\u8def\u5f84\u56fe\u7247\uff0c\u5fc5\u987b\u5e26\u4e0a\u7ad9\u70b9\u6839\uff09\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">String body =\"\u793a\u4f8b\uff1a\u8fd9\u91cc\u6709\u4e2aimg\u6807\u7b7e\uff0c\u5730\u5740\u662f\u76f8\u5bf9\u8def\u5f84&lt;img src='\/uploads\/allimg\/130923\/1FP02V7-0.png' \/&gt;\";\nmWebView.loadDataWithBaseURL(\"http:\/\/www.jcodecraeer.com\", body, \"text\/html\", \"utf-8\",null);<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">baseUrl \u82e5\u4e0d\u6307\u5b9a\u4e3a http:\/\/www.jcodecraeer.com\uff0c\u8fd9\u5f20\u56fe\u5c31\u663e\u793a\u4e0d\u51fa\u6765\u3002<\/p>\n<p style=\"margin: 1em 0px;\">\u4e5f\u53ef\u4ee5\u5148\u628a assets \u6587\u4ef6\u8bfb\u6210\u5b57\u7b26\u4e32\u518d loadData\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">String data = \"\";\ntry {\n    \/\/ \u8bfb\u53d6assets\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u9700\u8981\u7528\u5230AssetManager\u5bf9\u8c61\u7684Open\u65b9\u6cd5\u6253\u5f00\u6587\u4ef6\n    InputStream is = getAssets().open(\"html\/test2.html\");\n    \/\/ loadData()\u65b9\u6cd5\u9700\u8981\u7684\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\u6570\u636e\u6240\u4ee5\u6211\u4eec\u9700\u8981\u628a\u6587\u4ef6\u8f6c\u6210\u5b57\u7b26\u4e32\n    ByteArrayBuffer baf = new ByteArrayBuffer(500);\n    int count = 0;\n    while ((count = is.read()) != -1) {\n        baf.append(count);\n    }\n    data = EncodingUtils.getString(baf.toByteArray(), \"utf-8\");\n} catch (IOException e) {\n    e.printStackTrace();\n}\n\n\/\/ \u4e0b\u9762\u4e24\u79cd\u65b9\u6cd5\u90fd\u53ef\u4ee5\u52a0\u8f7d\u6210\u529f\nmWebView.loadData(data, \"text\/html\", \"utf-8\");\n\/\/ wv.loadDataWithBaseURL(\"\", data, \"text\/html\", \"utf-8\", \"\");<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u8fd9\u548c <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">loadUrl(\"file:\/\/\/android_asset\/html\/test1.html\")<\/code> \u6548\u679c\u63a5\u8fd1\uff0c\u4f46 loadData \u6ca1\u6709\u57fa\u51c6 URL\uff0c\u6587\u4ef6\u91cc\u7684\u8d44\u6e90\u6216\u94fe\u63a5\u4f1a\u5931\u6548\u3002<\/p>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">loadData()<\/code> \u7684 HTML \u4e0d\u80fd\u5305\u542b <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">#<\/code>\u3001<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">%<\/code>\u3001<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">\\<\/code>\u3001<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">?<\/code> \u56db\u79cd\u7279\u6b8a\u5b57\u7b26\u3002\u5e73\u65f6\u53ef\u80fd\u78b0\u5de7\u4e0d\u51fa\u95ee\u9898\uff0c\u51fa\u95ee\u9898\u65f6\u518d\u66ff\u6362\u3002<\/p>\n<ul style=\"padding-left: 1rem; margin-left: 1rem; font-size: 0.9rem; list-style-type: disc;\">\n<li>\n<section><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">%<\/code>\uff1a\u4f1a\u62a5\u627e\u4e0d\u5230\u9875\u9762\uff0c\u6574\u9875\u4e71\u7801\u3002<\/section>\n<\/li>\n<li>\n<section><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">#<\/code>\uff1a\u4f1a\u8ba9 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">goBack<\/code> \u5931\u6548\uff0c\u4f46 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">canGoBack<\/code> \u4ecd\u4e3a true\uff0c\u4e8e\u662f\u8fd4\u56de\u6309\u94ae\u4eae\u7740\u5374\u56de\u4e0d\u53bb\u3002<\/section>\n<\/li>\n<\/ul>\n<h3 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em;\">3. \u5185\u5bb9\u5904\u7406\u4e0e\u6eda\u52a8\u6761<\/h3>\n<p style=\"margin: 1em 0px;\">WebView \u4e0a padding \u51e0\u4e4e\u4e0d\u8d77\u4f5c\u7528\uff0c\u5185\u5bb9\u4ecd\u8d34\u8fb9\uff0c\u53cd\u800c\u4f1a\u632a\u6eda\u52a8\u6761\u3002\u8fd9\u662f\u63a7\u4ef6\u95ee\u9898\u3002\u5916\u5305\u4e00\u5c42 layout \u53ea\u80fd\u6539\u5584\u4e00\u70b9\u3002\u6b63\u786e\u505a\u6cd5\u662f\u5728\u52a0\u8f7d\u7684 CSS \u91cc\u52a0 padding\uff0c\u4e0d\u5fc5\u4e3a\u8fd9\u70b9\u7a7a\u767d\u6539 xml\u3002<\/p>\n<p style=\"margin: 1em 0px;\">\u91cd\u5199 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">shouldOverrideUrlLoading<\/code> \u65f6\u53ef\u4ee5\u9650\u5b9a\uff1a\u53ea\u6709 URL \u5305\u542b eoe.cn \u624d\u5728 WebView \u6253\u5f00\uff0c\u5426\u5219\u8d70\u7cfb\u7edf\u6d4f\u89c8\u5668\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">@Override\npublic boolean shouldOverrideUrlLoading(WebView view, String url) {\n    LogUtil.i(this, \"url=\" + url);\n    if ( url.contains(\"eoe.cn\") == true){\n        view.loadUrl(url);\n        return true;\n    }else{\n        Intent in = new Intent (Intent.ACTION_VIEW , Uri.parse(url));\n        startActivity(in);\n        return true;\n    }\n}<\/code><\/pre>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">android:scrollbarStyle<\/code> \u63a7\u5236\u6eda\u52a8\u6761\u4f4d\u7f6e\uff1a<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">SCROLLBARS_INSIDE_OVERLAY<\/code> \u50cf CSS padding\uff0c\u6761\u5b50\u5728 page \u91cc\uff1b<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">OUTSIDE_OVERLAY<\/code> \u5728\u5916\u4fa7\u3002<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);\nmWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);<\/code><\/pre>\n<hr>\n<h2 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em; border-bottom: 2px solid #ef7060; display: flex;\"><span style=\"display: inline-block; font-weight: bold; background: #ef7060; color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;\">\u4e8c\u3001WebView \u548c JavaScript \u4ea4\u4e92<\/span><\/h2>\n<p style=\"margin: 1em 0px;\">\u5206\u4e24\u79cd\uff1aJS \u8c03 Android\uff1bAndroid \u8c03 JS\u3002<\/p>\n<h3 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em;\">\u7b2c\u4e00\u79cd\uff1aJS \u8c03\u7528 Android<\/h3>\n<p style=\"margin: 1em 0px;\">\u5173\u952e\u4e09\u6b65\uff1a<\/p>\n<ol style=\"padding-left: 1rem; margin-left: 1rem; font-size: 0.9rem; list-style-type: decimal;\">\n<li>\n<section>\u6253\u5f00 JS\uff1a<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">mWebView.getSettings().setJavaScriptEnabled(true);<\/code><\/section>\n<\/li>\n<li>\n<section>\u5b9e\u73b0\u4ea4\u4e92\u63a5\u53e3\u3002<\/section>\n<\/li>\n<li>\n<section>\u628a\u63a5\u53e3\u5b9e\u4f8b <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">addJavascriptInterface<\/code> \u5230 WebView\uff08\u5173\u952e\uff09\u3002<\/section>\n<\/li>\n<\/ol>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">interface MyJavaScriptInterface {\n     void nativeMethod();\n}\nMyJavaScriptInterface myJavaScriptInterface = new MyJavaScriptInterface() {\n   @Override\n   public void nativeMethod() {\n      Toast.makeText(WebViewActivity.this,\"\u5bf9\u8bdd\u6846\",Toast.LENGTH_SHORT).show();\n   }\n\n};<\/code><\/pre>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\/**\n* WebView.addJavascriptInterface(Object,String)\u65b9\u6cd5\n* Object \u4ea4\u4e92\u63a5\u53e3\u5bf9\u8c61\n* String \u4ea4\u4e92\u63a5\u53e3\u540d\u79f0\n*\/\nmWebView.addJavascriptInterface(myJavaScriptInterface, \"MyJavaScriptInterface\");<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">HTML \u91cc\u901a\u8fc7 window.\u63a5\u53e3\u540d.\u65b9\u6cd5\u540d \u8c03\u7528\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">&lt;html&gt;\n&lt;head&gt;\n    &lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\"\/&gt;\n    &lt;title&gt;\u8868\u5355&lt;\/title&gt;\n    &lt;script&gt;\n                \/\/window:\u6d4f\u89c8\u5668\u7a97\u53e3\u5bf9\u8c61\n\t\t\/\/MyJavaScriptInterface\uff1ajs\u4e0e\u539f\u751fandroid\u5e94\u7528\u4ea4\u4e92\u7684\u63a5\u53e3\u540d\n\t\t\/\/showToast: js\u4e0e\u539f\u751fandroid\u5e94\u7528\u4ea4\u4e92\u7684\u63a5\u53e3\u7684\u65b9\u6cd5\u540d\n\t\tfunction toNativeFunction()\n\t        {\n\t\t\twindow.MyJavaScriptInterface.nativeMethod();\n\t        }\n\n    &lt;\/script&gt;\n  &lt;\/head&gt;\n\n   &lt;body&gt;\n    &lt;button onclick=\"toNativeFunction()\"&gt;\u6267\u884c\u8df3\u8f6c&lt;\/button&gt;\n   &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em;\">\u7b2c\u4e8c\u79cd\uff1aAndroid \u8c03\u7528 JS<\/h3>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">mWebView.loadUrl(\"javascript:testByNative()\");<\/code><\/p>\n<p style=\"margin: 1em 0px;\">\u9875\u9762\u5b9e\u73b0 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">testByNative<\/code>\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">  &lt;script&gt;\n\t     function testByNative(){\n\t\twindow.location.href = \"https:\/\/ai.zhousir.top\"; \/\/\u8df3\u8f6c\u5230\u6307\u5b9aurl\n\t     }\n\n    &lt;\/script&gt;<\/code><\/pre>\n<hr>\n<h2 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em; border-bottom: 2px solid #ef7060; display: flex;\"><span style=\"display: inline-block; font-weight: bold; background: #ef7060; color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;\">\u4e09\u3001WebView \u9875\u9762\u52a0\u8f7d\u6548\u679c<\/span><\/h2>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">WebViewClient<\/code> \u7ba1\u5f00\u59cb\/\u7ed3\u675f\u548c URL \u62e6\u622a\uff1b<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">WebChromeClient.onProgressChanged<\/code> \u7ba1\u8fdb\u5ea6\u6761\u3002<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"> public void setWebVieClient(){\n        mWebView.setWebViewClient(new WebViewClient(){\n            \/**\n             * \u8bf7\u6c42\u7684url\u5d4c\u5165webview\u663e\u793a\n             *\/\n            @Override\n            public boolean shouldOverrideUrlLoading(WebView webview, String url) {\n                webview.loadUrl(url);\n                return true;\n            }\n\n            \/**\n             * \u52a0\u8f7dweb\u9875\u9762\u8c03\u7528\n             * @param view\n             * @param url\n             * @param favicon\n             *\/\n            @Override\n            public void onPageStarted(WebView view, String url, Bitmap favicon) {\n                super.onPageStarted(view, url, favicon);\n                mLoadTxt.setText(\"\u6b63\u5728\u52a0\u8f7d\u4e2d.....\");\n            }\n\n            \/**\n             * web\u9875\u9762\u52a0\u8f7d\u5b8c\u6210\u8c03\u7528\n             * @param view\n             * @param url\n             *\/\n            @Override\n            public void onPageFinished(WebView view, String url) {\n                super.onPageFinished(view, url);\n                mLoadTxt.setText(\"\u52a0\u8f7d\u5b8c\u6210\");\n            }\n\n        });\n\n        mWebView.setWebChromeClient(new WebChromeClient(){\n            \/**\n             * web\u9875\u9762\u52a0\u8f7d\u8fdb\u5ea6\u8f6c\u53d8\u8c03\u7528\n             * @param view\n             * @param newProgress\n             *\/\n            @Override\n            public void onProgressChanged(WebView view, int newProgress) {\n                super.onProgressChanged(view, newProgress);\n                Logs.e(\"onProgressChanged :\"+newProgress);\n                mLoadingSeekBar.setProgress(newProgress);\n            }\n        });\n\n    }<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u7269\u7406\u8fd4\u56de\u952e\u4f18\u5148\u5728 WebView \u5386\u53f2\u91cc\u56de\u9000\uff1a<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">@Override\n\/**\n*\u5d4c\u5165\u7f51\u9875\u56de\u9000\u64cd\u4f5c\n*\/\npublic boolean onKeyDown(int keyCode, KeyEvent event) {\n    if(keyCode == KeyEvent.KEYCODE_BACK &amp;&amp; mWebView.canGoBack()) {\n        mWebView.goBack();\/\/ \u8fd4\u56de\u524d\u4e00\u4e2a\u9875\u9762\n        return true;\n    }\n    return super.onKeyDown(keyCode, event);\n}<\/code><\/pre>\n<hr>\n<h2 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em; border-bottom: 2px solid #ef7060; display: flex;\"><span style=\"display: inline-block; font-weight: bold; background: #ef7060; color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;\">\u56db\u3001WebView \u7f13\u5b58\u76f8\u5173<\/span><\/h2>\n<p style=\"margin: 1em 0px;\">\u52a0\u8f7d HTML \u65f6\uff0c\u4f1a\u5728 data\/\u5e94\u7528 package \u4e0b\u751f\u6210 database \u4e0e cache\uff1a\u8bf7\u6c42\u8fc7\u7684 URL \u8bb0\u5728 webviewCache.db\uff0c\u5185\u5bb9\u5728 webviewCache \u6587\u4ef6\u5939\u3002WebView \u6709\u4e24\u7c7b\u7f13\u5b58\uff1a\u7f51\u9875\u6570\u636e\u7f13\u5b58\uff08\u6253\u5f00\u8fc7\u7684\u9875\u9762\u53ca\u8d44\u6e90\uff09\u3001H5 \u7f13\u5b58\uff08AppCache\uff09\u3002<\/p>\n<h3 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em;\">\u7f51\u9875\u7f13\u5b58\u6784\u6210<\/h3>\n<ul style=\"padding-left: 1rem; margin-left: 1rem; font-size: 0.9rem; list-style-type: disc;\">\n<li>\n<section><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">\/data\/data\/package_name\/cache\/<\/code><\/section>\n<\/li>\n<li>\n<section><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">\/data\/data\/package_name\/database\/webview.db<\/code><\/section>\n<\/li>\n<li>\n<section><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">\/data\/data\/package_name\/database\/webviewCache.db<\/code><\/section>\n<\/li>\n<\/ul>\n<p style=\"margin: 1em 0px;\">\u6d4f\u89c8\u8fc7\u7684\u7f51\u9875 URL \u4ee5\u53ca css\u3001\u56fe\u7247\u3001js \u7b49\u4f1a\u8fdb\u8fd9\u4e9b\u8868\u3002<\/p>\n<p style=\"margin: 1em 0px;\">\u7f13\u5b58\u6a21\u5f0f\u6709 5 \u79cd\uff1a<\/p>\n<table style=\"border-collapse: collapse; margin: 1.4em auto; max-width: 100%; table-layout: fixed; text-align: left; overflow: auto; display: table; overflow-wrap: break-word; word-break: break-all;\" width=\"817\">\n<thead>\n<tr>\n<th style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top; font-weight: bold; background-color: #fff9f9; color: #ef7060;\">\u6a21\u5f0f<\/th>\n<th style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top; font-weight: bold; background-color: #fff9f9; color: #ef7060;\">\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">LOAD_CACHE_ONLY<\/code><\/td>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">\u4e0d\u4f7f\u7528\u7f51\u7edc\uff0c\u53ea\u8bfb\u672c\u5730\u7f13\u5b58<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">LOAD_DEFAULT<\/code><\/td>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">\u6309 cache-control \u51b3\u5b9a\u662f\u5426\u8054\u7f51<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">LOAD_CACHE_NORMAL<\/code><\/td>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">API 17 \u5df2\u5e9f\u5f03\uff0cAPI 11 \u8d77\u540c LOAD_DEFAULT<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">LOAD_NO_CACHE<\/code><\/td>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">\u4e0d\u7528\u7f13\u5b58\uff0c\u53ea\u4ece\u7f51\u7edc\u53d6<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; font-size: 0.9em; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: #ef7060; background-color: rgba(27, 31, 35, 0.05); word-break: break-all;\">LOAD_CACHE_ELSE_NETWORK<\/code><\/td>\n<td style=\"font-size: 0.75em; padding: 9px 12px; line-height: 22px; border: 1px solid #ef7060; vertical-align: top;\">\u672c\u5730\u6709\u5c31\u7528\uff0c\u4e0d\u8bba\u662f\u5426\u8fc7\u671f\u6216 no-cache<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"margin: 1em 0px;\">\u4f8b\u5982 www.taobao.com \u7684 cache-control \u4e3a no-cache\uff1aLOAD_DEFAULT \u4e0b\u603b\u4f1a\u8054\u7f51\uff0c\u6ca1\u7f51\u5c31\u9519\u8bef\u9875\uff1bLOAD_CACHE_ELSE_NETWORK \u4e0b\u53ea\u8981\u672c\u5730\u6709\u7f13\u5b58\u5c31\u7528\u3002www.360.com.cn \u7684 cache-control \u4e3a max-age=60\uff0c\u4e24\u79cd\u6a21\u5f0f\u90fd\u4f1a\u7528\u672c\u5730\u7f13\u5b58\u3002<\/p>\n<p style=\"margin: 1em 0px;\">\u5efa\u8bae\uff1a\u6709\u7f51\u7528 LOAD_DEFAULT\uff0c\u65e0\u7f51\u7528 LOAD_CACHE_ELSE_NETWORK\u3002<\/p>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\"> mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); \/\/ \u8bbe\u7f6e  \u7f13\u5b58\u6a21\u5f0f\n\t\t\/\/ \u5f00\u542f DOM storage API \u529f\u80fd\n\t\tmWebView.getSettings().setDomStorageEnabled(true);\n\t\t\/\/ \u5f00\u542f database storage API \u529f\u80fd\n\t\tmWebView.getSettings().setDatabaseEnabled(true);\n\t\tString cacheDirPath = getFilesDir().getAbsolutePath()+ APP_CACAHE_DIRNAME;\n\t\t\/\/ String cacheDirPath = getCacheDir().getAbsolutePath()+Constant.APP_DB_DIRNAME;\n\t\tLog.i(TAG, \"cacheDirPath=\" + cacheDirPath);\n\t\t\/\/ \u8bbe\u7f6e\u6570\u636e\u5e93\u7f13\u5b58\u8def\u5f84\n\t\tmWebView.getSettings().setDatabasePath(cacheDirPath);\n\t\t\/\/ \u8bbe\u7f6e Application Caches \u7f13\u5b58\u76ee\u5f55\n\t\tmWebView.getSettings().setAppCachePath(cacheDirPath);\n\t\t\/\/ \u5f00\u542f Application Caches \u529f\u80fd\n\t\tmWebView.getSettings().setAppCacheEnabled(true);<\/code><\/pre>\n<h3 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em;\">\u6e05\u9664 WebView \u7f13\u5b58<\/h3>\n<section style=\"display: block; background-repeat: no-repeat; width: 100%; height: 16px;\"><\/section>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 10px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 10px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; margin: 0.5em; padding: 3px 5px; overflow-x: auto; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\tpublic void clearWebViewCache() {\n\n\t\t\/\/ \u6e05\u7406Webview\u7f13\u5b58\u6570\u636e\u5e93\n\t\ttry {\n\t\t\tdeleteDatabase(\"webview.db\");\n\t\t\tdeleteDatabase(\"webviewCache.db\");\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\n\t\t\/\/ WebView \u7f13\u5b58\u6587\u4ef6\n\t\tFile appCacheDir = new File(getFilesDir().getAbsolutePath()\n\t\t\t\t+ APP_CACAHE_DIRNAME);\n\t\tLog.e(TAG, \"appCacheDir path=\" + appCacheDir.getAbsolutePath());\n\n\t\tFile webviewCacheDir = new File(getCacheDir().getAbsolutePath()\n\t\t\t\t+ \"\/webviewCache\");\n\t\tLog.e(TAG, \"webviewCacheDir path=\" + webviewCacheDir.getAbsolutePath());\n\n\t\t\/\/ \u5220\u9664webview \u7f13\u5b58\u76ee\u5f55\n\t\tif (webviewCacheDir.exists()) {\n\t\t\tdeleteFile(webviewCacheDir);\n\t\t}\n\t\t\/\/ \u5220\u9664webview \u7f13\u5b58 \u7f13\u5b58\u76ee\u5f55\n\t\tif (appCacheDir.exists()) {\n\t\t\tdeleteFile(appCacheDir);\n\t\t}\n\t}\n\n\t\/**\n\t * \u9012\u5f52\u5220\u9664 \u6587\u4ef6\/\u6587\u4ef6\u5939\n\t *\n\t * @param file\n\t *\/\n\tpublic void deleteFile(File file) {\n\n\t\tLog.i(TAG, \"delete file path=\" + file.getAbsolutePath());\n\n\t\tif (file.exists()) {\n\t\t\tif (file.isFile()) {\n\t\t\t\tfile.delete();\n\t\t\t} else if (file.isDirectory()) {\n\t\t\t\tFile files[] = file.listFiles();\n\t\t\t\tfor (int i = 0; i &lt; files.length; i++) {\n\t\t\t\t\tdeleteFile(files[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfile.delete();\n\t\t} else {\n\t\t\tLog.e(TAG, \"delete file no exists \" + file.getAbsolutePath());\n\t\t}\n\t}<\/code><\/pre>\n<hr>\n<h2 style=\"margin: 1.2em 0px 1em; padding: 0px; font-weight: bold; font-size: 1.3em; border-bottom: 2px solid #ef7060; display: flex;\"><span style=\"display: inline-block; font-weight: bold; background: #ef7060; color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;\">\u4e94\u3001\u901a\u8fc7 WebView \u81ea\u5e26\u7684\u7f13\u5b58\u529f\u80fd\u6765\u5b9e\u73b0\u79bb\u7ebf\u9605\u8bfb<\/span><\/h2>\n<p style=\"margin: 1em 0px;\">\u5c55\u5f00\u6b65\u9aa4\u89c1\uff1a<a href=\"http:\/\/www.jcodecraeer.com\/a\/anzhuokaifa\/androidkaifa\/2015\/0417\/2736.html\">\u901a\u8fc7WebView\u81ea\u5e26\u7684\u7f13\u5b58\u529f\u80fd\u6765\u5b9e\u73b0\u79bb\u7ebf\u9605\u8bfb<\/a><\/p>\n<blockquote style=\"margin: 20px 0px; display: block; font-size: 0.9em; overflow: auto; border-left: 3px solid #ef7060; color: #6a737d; padding: 10px 10px 10px 20px; background: #fff9f9;\">\n<p style=\"margin: 1em 0px;\"><strong>\u4e00\u53e5\u8bdd\u603b\u7ed3\uff1a\u672c\u5730 HTML \u4e0d\u7528\u7f51\u7edc\u6743\u9650\uff1b\u8fdc\u7a0b\u624d\u8981\u3002\u7247\u6bb5\u7528 loadDataWithBaseURL \u8865 baseUrl\uff0cJS \u6865\u8d70 addJavascriptInterface\uff0c\u7f13\u5b58\u6309\u6709\u7f51\/\u65e0\u7f51\u5207\u6362 LOAD_DEFAULT \u4e0e LOAD_CACHE_ELSE_NETWORK\u3002<\/strong><\/p>\n<\/blockquote>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>WebView \u7528\u6765\u663e\u793a HTML\uff0c\u5bf9 HTML5 \u4e5f\u53cb\u597d\uff0c\u63a5\u8fd1 iOS \u7684 UIWebView\u3002\u5b83\u4e0d\u9700\u8981\u4ec5\u4ec5 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[201],"_links":{"self":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/1640"}],"collection":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1640"}],"version-history":[{"count":3,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/1640\/revisions"}],"predecessor-version":[{"id":1660,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/1640\/revisions\/1660"}],"wp:attachment":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}