类似问题:
我使用许多具有不同应用程序Id的产品Flavors。
如果我尝试从 res/raw/file.html 加载html文件,我会得到一个ClassNotFoundException找不到类“product.flavor.package.R$raw”
R.java文件具有不同的包名称。
看起来你不能从文件加载URL,比如:webView.loadUrl( “file:///android_res/raw/page.html”);因为 WebView 尝试使用 R.class 文件具有不同的包名称。
我假设从资产加载html文件ERR_FILE_NOT_FOUND具有相同的问题,但您没有看到异常。( webView.loadUrl( “file:///android_assets/page.html” ); )
通过这个小工作,我解决了我的问题:
try {
AssetManager assetManager = context.getAssets();
InputStream stream = assetManager.open("page.html");
BufferedReader r = new BufferedReader(new InputStreamReader(stream));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line).append("\n");
}
webView.loadDataWithBaseURL(null, total.toString(), "text/html", "UTF-8", null);
} catch (Exception xxx) {
Log.e(TAG, "Load assets/page.html", xxx);
}
我希望这有帮助。斯蒂芬