在Webview中打开本地Html文件 - Android

时间:2011-04-28 00:29:33

标签: java android

我在根文件夹中保存了一个文件,并尝试在webview中打开它。

这是我保存的代码:

    OutputStream outstream = null;
    outstream = openFileOutput(fileName ,MODE_WORLD_READABLE);

    /// if file the available for writing
    if (outstream != null) {
        /// prepare the file for writing
        OutputStreamWriter outputreader = new OutputStreamWriter(outstream);
        BufferedWriter buffwriter = new BufferedWriter(outputreader);

        /// write the result into the file
        buffwriter.write(result);
    }

    /// close the file
    outstream.close();

} catch (java.io.FileNotFoundException e) {
    System.out.println("File not found in the writing...");
} catch (IOException e) {
    System.out.println("In the writing...");
}

这是我调用文件的代码:

                    fileView.getSettings().setJavaScriptEnabled(true);
            fileView.loadUrl("file:///" + name); <---

并在应用程序内部,它给我一个文件未找到错误。

任何见解都很有用。

5 个答案:

答案 0 :(得分:16)

WebView mWebView=(WebView)findViewById(R.id.mWebView);

            mWebView.loadUrl("file:///book.html");
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.getSettings().setSaveFormData(true);
            mWebView.getSettings().setBuiltInZoomControls(true);
            mWebView.setWebViewClient(new MyWebViewClient());

private class MyWebViewClient extends WebViewClient 
{ 
    @Override 
    //show the web page in webview but not in web browser
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        view.loadUrl (url); 
        return true;
    }
}

试试这个

答案 1 :(得分:12)

实际上当您使用file:///...打开网址时 那么这意味着你应该将文件保存在assets目录下(比如test.html)。 现在假设您必须访问test.html文件,您需要像这样写

loadURL("file:///android_asset/test.html');

答案 2 :(得分:6)

路径错误,假设未触及异常。

file:///告诉浏览器查找/ name

openFileOutput(fileName)告诉应用写入&lt; application-files-directory&gt; / fileName

您的网址应为“file:///”+ getFilesDir()+ File.separator + fileName

答案 3 :(得分:0)

对于将与应用程序捆绑在一起的文件,您可以通过在项目浏览器中右键单击您的应用程序,然后选择

,将“资产”文件夹添加到项目中

新建=>文件夹=>资产文件夹

将HTML文件添加到资产文件夹,然后通过以下方式加载它:

fileView.loadUrl("file:///android_asset/"+name);

可以在HTML中使用相同的URL链接到其他HTML或CSS文件。

答案 4 :(得分:0)

您可以先阅读资产文件,然后通过asd将其显示在webview上 像这样

        BufferedReader read = null; 
StringBuilder data = new StringBuilder(); 
try {
            read = new BufferedReader(new InputStreamReader(getAssets().open("htmlFile.html"), "UTF-8")); 
            String webData;
            while ((mLine = read.readLine()) != null) {
               data.append(mline);
            } 
    } catch (IOException e) {
             log(",e.getmessage()) } finally {
            if (reader != null) {
                 try {
                     reader.close();
                 } catch (IOException e) {
                     log(",e.getmessage())
                 }
            } 
    }

然后将这些数据加载到webview中

webview.loadData(data, "text/html", "UTF-8");