我已按照此主题中的说明和信息进行操作:
Webview load html from assets directory
这导致我生成以下代码:
html文件,patchnotes.html:
<!DOCTYPE html>
<html>
<head>
<title>Hi there</title>
</head>
<body>
This is a page
a simple page
</body>
</html>
我正在使用的webveiw的XML参考:
<WebView
android:id="@+id/webview"
android:visibility="gone"
android:layout_marginLeft="30dp"
android:layout_marginTop="220dp"
android:layout_width="200dp"
android:layout_height="300dp"></WebView>
与显示webview相关的Java代码:
private void changeLog() {
final View newsPanel = (View) findViewById(R.id.newsPanel);
final TextView titleChangeLog = (TextView) findViewById(R.id.titleChangeLog);
final WebView webview = (WebView) findViewById(R.id.webview);
newsPanel.setVisibility(View.VISIBLE);
titleChangeLog.setVisibility(View.VISIBLE);
webview.setVisibility(View.VISIBLE);
toggleMenu(newsPanel);
}
public class ViewWeb extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView wv;
wv = (WebView) findViewById(R.id.webview);
wv.loadUrl("file:///android_asset/patchnotes.html");
}
}
我怀疑这可能与ViewWeb类永远不会被调用有关,但我上面链接的示例中没有任何内容可以表明您需要。
执行此代码时会发生什么,没有显示任何内容。没有错误,它只是不显示html文件的任何内容。
非常感谢这里的任何帮助,我相信这是我想念的简单。
谢谢。
答案 0 :(得分:1)
如果您想要从资源文件夹访问文件,请使用以下代码。这将列出资产文件夹中的所有文件:
AssetManager assetManager = getAssets();
String[] files = assetManager.list("");
这是打开一个certian文件:
InputStream input = assetManager.open(assetName);
修改强>
String htmlFilename = "patchnotes.html";
AssetManager mgr = getBaseContext().getAssets();
try {
InputStream in = mgr.open(htmlFilename, AssetManager.ACCESS_BUFFER);
String htmlContentInStringFormat = StreamToString(in);
in.close();
wv.loadDataWithBaseURL(null, htmlContentInStringFormat, "text/html", "utf-8", null);
} catch (IOException e) {
e.printStackTrace();
}
public static String StreamToString(InputStream in) throws IOException {
if(in == null) {
return "";
}
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try {
Reader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
}
return writer.toString();
}