Bad*_*ari 20 java android webview gradle android-studio
我正在使用Android Studio/Gradle.
app\src\main\android_asset文件夹中有一个名为chart.html的文件.
我正在尝试将此文件加载到我的webview中,如下所示:
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///android_asset/chart.html");
setContentView(view);
Run Code Online (Sandbox Code Playgroud)
但我总是得到错误:无法加载因为ERR_FILE_NOT_FOUND.
我在这里错过了什么?
Rus*_*tam 47
目录名称应该是资产而不是android_assets
这样做: 
如上图所示,只需右键单击您的应用程序 - >新建 - >文件夹 - >资产文件夹
现在将您的.html文件放在assets文件夹中.
而已.完成.
您所做的代码中的剩余部分是相同的.
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///android_asset/hello.html");
setContentView(view);
Run Code Online (Sandbox Code Playgroud)
类似的问题:
我使用了许多带有不同applicationId的productFlavor.
如果我尝试从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);
}
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.斯蒂芬
| 归档时间: |
|
| 查看次数: |
46620 次 |
| 最近记录: |