首先,RFC 1738没有为file://
方案指定 URL 片段部分。文件 URI 由file://
、主机名和路径组成——仅此而已。
因此,不应支持文件 URI 中的锚点。但出于某种原因,自 Jelly Bean 以来,Android 确实支持它们。如果你也想让他们在冰淇淋三明治上工作:
private static String BASE_URL = "file:///android_asset/";
mWebView.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
try {
if (url.startsWith(BASE_URL) && url.contains("#")) {
url = url.replace(BASE_URL, "");
InputStream is = getAssets().open(url.substring(0, url.indexOf("#")));
return new WebResourceResponse("text/html", "utf-8", is);
}
} catch(IOException e) {
Log.e("DKDK", "shouldInterceptRequest", e);
}
return null;
}
});