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

时间:2011-05-18 15:53:11

标签: android android-layout android-webview

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

4 个答案:

答案 0 :(得分:1)

使用

wv.loadUrl("file:///android_asset/Preface.html");

确保您的文件Preface.html位于您的android资产/文件夹

或者如果您的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代码。

答案 1 :(得分:0)

首先,在LogCat中显示您下载的文件的内容,看看下载是否成功

答案 2 :(得分:0)

有时会发生什么,您的屏幕尺寸变得太小,无法在屏幕上显示内容。确保您为屏幕使用更大的显示分辨率。

答案 3 :(得分:0)

我的以下代码从Url加载html-content并将其显示在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);