android WebView不显示html文件中的数据

bihw5rsg  于 2023-01-19  发布在  Android
关注(0)|答案(4)|浏览(164)

我的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();
       }
 }

代码运行正常,但内容没有显示在网页视图中,我做错了什么?

rdlzhqv9

rdlzhqv91#

使用

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

qhhrdooz

qhhrdooz2#

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

yzckvree

yzckvree3#

有时候会发生的是,你的屏幕尺寸变得太小,内容无法在屏幕上显示。请注意,你正在使用一个更大的显示分辨率为您的屏幕。

tsm1rwdh

tsm1rwdh4#

下面的代码从URL加载html内容,并在webview中显示它:

    • 主要活动. java**
String htmlContent = getHtmlContent();
            if (htmlContent != null) {
                webView.getSettings().setBuiltInZoomControls(true);
                webView.loadData(htmlContent, fileType.endsWith("rfc822") ? "rfc822" : "text/html", "UTF-8");
            }
    • 获取HtmlContent**方法
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;

下载任务. 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);解决了这个问题

相关问题