Android Studio:简单的webview设置

时间:2015-08-27 04:56:19

标签: android webview

我已按照此主题中的说明和信息进行操作:

Webview load html from assets directory

这导致我生成以下代码:

html文件,patchnotes.html:

<!DOCTYPE html>
<html>
<head>
  <title>Hi there</title>
</head>
<body>
  This is a page
  a simple page
</body>
</html>

我正在使用的webveiw的XML参考:

<WebView
        android:id="@+id/webview"
        android:visibility="gone"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="220dp"
        android:layout_width="200dp"
        android:layout_height="300dp"></WebView>

与显示webview相关的Java代码:

private void changeLog() {
    final View newsPanel = (View) findViewById(R.id.newsPanel);
    final TextView titleChangeLog = (TextView) findViewById(R.id.titleChangeLog);
    final WebView webview = (WebView) findViewById(R.id.webview);

    newsPanel.setVisibility(View.VISIBLE);
    titleChangeLog.setVisibility(View.VISIBLE);
    webview.setVisibility(View.VISIBLE);
    toggleMenu(newsPanel);
}

public class ViewWeb extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView wv;
        wv = (WebView) findViewById(R.id.webview);
        wv.loadUrl("file:///android_asset/patchnotes.html");
    }
}

我怀疑这可能与ViewWeb类永远不会被调用有关,但我上面链接的示例中没有任何内容可以表明您需要。

执行此代码时会发生什么,没有显示任何内容。没有错误,它只是不显示html文件的任何内容。

非常感谢这里的任何帮助,我相信这是我想念的简单。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您想要从资源文件夹访问文件,请使用以下代码。这将列出资产文件夹中的所有文件:

AssetManager assetManager = getAssets();
String[] files = assetManager.list("");

这是打开一个certian文件:

InputStream input = assetManager.open(assetName);

修改

    String htmlFilename = "patchnotes.html";
    AssetManager mgr = getBaseContext().getAssets();
    try {
        InputStream in = mgr.open(htmlFilename, AssetManager.ACCESS_BUFFER);
        String htmlContentInStringFormat = StreamToString(in);
        in.close();
        wv.loadDataWithBaseURL(null, htmlContentInStringFormat, "text/html", "utf-8", null);

    } catch (IOException e) {
        e.printStackTrace();
    }

    public static String StreamToString(InputStream in) throws IOException {
        if(in == null) {
            return "";
        }
        Writer writer = new StringWriter();
        char[] buffer = new char[1024];
        try {
            Reader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
            int n;
            while ((n = reader.read(buffer)) != -1) {
                writer.write(buffer, 0, n);
            }
        } finally {
        }
        return writer.toString();
    }