我在我的Android应用程序上有一个页面,它将使用下面的代码显示一个html文件的内容------。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.intro);
WebView wv = (WebView) findViewById(R.id.WebView01);
try {
InputStream fin;
fin = getAssets().open("Preface.html");
byte[] buffer = new byte[fin.available()];
fin.read(buffer);
fin.close();
wv.loadData(new String(buffer), "text/html", "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
}
代码运行正常,但内容不显示在webview中,我做错了什么?
使用
wv.loadUrl("file:///android_asset/Preface.html");
确保你的文件Preface.html在你的android assets文件夹内。
或如果您的html文件中包含javascript代码,请使用以下命令启用javascript支持。
WebView wv = (WebView) findViewById(R.id.WebView01);
try {
InputStream fin;
fin = getAssets().open("Preface.html");
byte[] buffer = new byte[fin.available()];
fin.read(buffer);
fin.close();
wv.loadData(new String(buffer), "text/html", "UTF-8");
WebSettings webSettings = wv.getSettings();
wv.setJavaScriptEnabled(true);
} catch (IOException e) {
e.printStackTrace();
}
如果这样还不能解决你的问题,请粘贴你的html代码。
首先,在LogCat中显示你下载的文件内容,并查看下载是否正常。
有时会出现这样的情况,你的屏幕尺寸太小,内容无法显示在屏幕上,请确认你的屏幕使用的是更大的显示分辨率。
我的以下代码从一个Url中加载html内容并在webview中显示,希望对你有帮助。
MainActivity.java
String htmlContent = getHtmlContent();
if (htmlContent != null) {
webView.getSettings().setBuiltInZoomControls(true);
webView.loadData(htmlContent, fileType.endsWith("rfc822") ? "rfc822" : "text/html", "UTF-8");
}
getHtmlContent 方法
DownloadTask task = new DownloadTask();
try {
String result = String.valueOf(task.execute(currentFileUrl).get());
if (task.getStatus() == AsyncTask.Status.RUNNING) {
loadingProgressBar.setVisibility(View.GONE);
}
return result;
} catch (ExecutionException | InterruptedException e) {
e.printStackTrace();
}
return null;
和 DownloadTask.java 阶层
public class DownloadTask extends AsyncTask<String, Void, StringBuilder> {
@Override
protected StringBuilder doInBackground(String... urls) {
StringBuilder result = new StringBuilder();
URL url;
HttpURLConnection connection;
try {
url = new URL(urls[0]);
connection = (HttpURLConnection) url.openConnection();
InputStream in = connection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while (data != -1) {
char current = (char) data;
result.append(current);
data = reader.read();
}
return result;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
希望能帮助到有的人.我遇到的一个问题是WebView没有反播放内容,我通过设置了 WebView webview = findViewById(R.id.webView);
和去除 webview = new WebView(this);