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

Android WebView不显示html文件中的数据,android,android-layout,android-webview,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 {

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

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

wv.loadUrl("file:///android_asset/Preface.html");
确保您的文件preforce.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代码。

有时会发生的情况是,您的屏幕太小,无法在屏幕上显示内容。确保您的屏幕使用更大的显示分辨率。

我的以下代码从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;
}
公共类下载任务扩展了异步任务{
@凌驾
受保护的StringBuilder doInBackground(字符串…URL){
StringBuilder结果=新建StringBuilder();
网址;
httpurl连接;
试一试{
url=新url(url[0]);
connection=(HttpURLConnection)url.openConnection();
InputStream in=connection.getInputStream();
InputStreamReader reader=新的InputStreamReader(in);
int data=reader.read();
while(数据!=-1){
当前字符=(字符)数据;
结果.追加(当前);
data=reader.read();
}
返回结果;
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
}

希望它能帮助其他人。 我遇到的一个问题是WebView没有释放内容,我通过设置
WebView WebView=findViewById(R.id.WebView)来解决它

并删除
webview=newwebview(此)

为此,他可以使用滚动视图,然后在其中使用webView,下载是可以的,因为如果我使用代码-webView wv=new webView动态加载html文件(此代码);setContentView(wv);文件加载没有问题。不幸的是wv.loadUrl。。没有工作,当我尝试上面的代码时,我得到一个错误,说setjaveDescriptEnabled是未定义的。奇怪的是,当我使用代码webview webview=newwebview动态加载webview时(这是);setContentView(网络视图);html加载得非常完美,只是无法加载到组件中。