在 Android 上载入本地 HTML 文件到 WebView

29

我需要将一个已存在的HTML文件加载到一个位于文件系统中此路径下的WebView中:

/data/data/com.example.example/files/file.html

但是,当WebView加载它时,我什么也看不到。 谁能帮帮我?

WebView 代码(假设路径是我上面写的路径):

 WebView webView = (WebView)findViewById(R.id.webView1);

  File htmlFile = new File(path);
    if(htmlFile.exists())
    {
        webView.loadUrl(htmlFile.getAbsolutePath());

    }

htmlFile.exists()返回true吗?如果是,您在logcat中看到了什么? - Greg Ennis
htmlFile.exists() 总是返回 true... 我尝试在 if 语句中加入一个日志,logcat 显示了该日志... - donadev
4个回答

53

尝试将file:///添加进去,稍微改变一下:

WebView webView = (WebView)findViewById(R.id.webView1);
webview.loadUrl("file:///data/data/com.example.example/files/file.html");  

不过,你可以将文件放入源代码中的assets文件夹中,然后执行以下操作:

WebView webView = (WebView)findViewById(R.id.webView1);
webview.loadUrl("file:///android_asset/file.html");

30

HTML文件应该放在资产文件夹中,该文件夹将位于您项目的根目录中。

所以,如果是在Eclipse中,则将您的文件移动到资产文件夹中。

assets/index.html

在Android Studio项目中使用此文件夹:

/app/src/main/assets/index.html
现在使用。
WebView wv= (WebView)findViewById(R.id.webView1);
wv.loadUrl("file:///android_asset/index.html");

在我的项目中没有名为android_asset的文件夹。 - Shahid Karimi
然后创建资产文件夹。 - Nauman Ash

7
你需要实现一个ContentProvider来将本地文件映射到uri,就像这个链接中所解释的那样:如何在Android Webview中显示本地文件 或者你可以像下面这样从Assets文件夹加载任何HTML页面:
 WebView wv= (WebView)findViewById(R.id.webView1);
 wv.loadUrl("file:///android_asset/yourfile.html");
 wv.getSettings().setJavaScriptEnabled(true);

0

试试这个:

web = (Webview) findViewById(R.id.webview);
web.setWebClient(new WebViewClient());
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setAllowFileAccess(true);
web.getSettings().setAllowFileAccessFromFileURLs(true);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接