WebView不显示来自html文件的数据

问题描述 投票:0回答:4

我在我的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中,我做错了什么?

android android-layout android-webview
4个回答
1
投票

使用

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代码。


0
投票

首先,在LogCat中显示你下载的文件内容,并查看下载是否正常。


0
投票

有时会出现这样的情况,你的屏幕尺寸太小,内容无法显示在屏幕上,请确认你的屏幕使用的是更大的显示分辨率。


0
投票

我的以下代码从一个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);

© www.soinside.com 2019 - 2024. All rights reserved.