加载现有的.html文件与Android的WebView
-
26-09-2019 - |
题
我也尝试样本,从谷歌代码,并与WebView
等资源,但是当我尝试这样做我自己的代码,这是行不通的演示给我。
欲负载myfile.html
其中我把资产文件夹,并使用:
private WebView myWebView;
myWebView.loadUrl("file:///android_assets/myfile.html");
在仿真器显示误差
在
file:///android_assets/myfile.html
该网页不能 加载为:请求的文件没有被发现。/android_assets/myfile.html
当我把那个文件夹res/raw/
并使用:
myWebView.loadUrl("file:///android_res/raw/myfile.html");
那么只有仿真器的Android 2.2 API级8可以加载文件可能,其它旧版本显示相同的错误。我这么想吗?
有没有在应用程序包,其上的所有API版本一起加载现有.html文件的方法吗?
解决方案
OK,那是我非常愚蠢的错误。我在这里发表的答案,以防万一有人有同样的问题。
的文件存储在资产正确的路径文件夹是file:///android_asset/*
(没有“s”是资产的文件夹,我总是在想它必须有一个“S”)。
和,mWebView.loadUrl("file:///android_asset/myfile.html");
工作下的所有API级别。
我还是不明白,为什么mWebView.loadUrl("file:///android_res/raw/myfile.html");
仅适用于API 8级。但现在并不重要。
其他提示
粘贴HTML文件的资产项目文件夹文件夹中。 并建立与FOL代码布局文件夹中的XML文件: my.xml:
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
在活动添加FOL代码
setContentView(R.layout.my);
WebView mWebView = null;
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/new.html"); //new.html is html file name.
如果您的结构应该是这样的:
/assets/html/index.html
/assets/scripts/index.js
/assets/css/index.css
然后,只需做(的Android web视图:在处理方向更改)
if(WebViewStateHolder.INSTANCE.getBundle() == null) { //this works only on single instance of webview, use a map with TAG if you need more
webView.loadUrl("file:///android_asset/html/index.html");
} else {
webView.restoreState(WebViewStateHolder.INSTANCE.getBundle());
}
请确保您添加
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
}
然后,只需使用网址
<html>
<head>
<meta charset="utf-8">
<title>Zzzz</title>
<script src="../scripts/index.js"></script>
<link rel="stylesheet" type="text/css" href="../css/index.css">
复制)粘贴.html文件中的资产项目的文件夹,并在您的活动添加下面的代码上的onCreate(。
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///android_asset/**YOUR FILE NAME**.html");
view.setBackgroundColor(Color.TRANSPARENT);
setContentView(view);
您可以手动读取的HTML文件,然后使用web视图的loadData
或loadDataWithBaseUrl
方法来显示它。
的调试汇编强>是在释放不同强>之一,因此:
考虑这样的项目文件结构[这种情况下,如果要调试组装]:
src
|
debug
|
assets
|
index.html
您应该调用的index.html到你的WebView这样的:
WebView web=(WebView)findViewById(R.id.web);
web.loadUrl("file:///android_asset/index.html");
布局:
<WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top"/>
如此往复,对于推出组装,应该是这样的:
src
|
release
|
assets
|
index.html