27

我是 Android 开发的新手。

我想将html 文件加载到webview中。

请注意,像这样的 SO 上有很多相关问题,但它们都涉及从assets文件夹中获取 **.html* 。

但我想从本地文件夹加载 html 文件,比如“D://abc.html”,因为如果我的 html 大约为 10Mb,那么相应的 apk 大小也会达到 10mb。

任何帮助表示赞赏。

编辑

我试过webView.loadUrl("file:///D:/Projects/myWebsite/index.html");

但它给出了Web page not availableand File not found error

4

4 回答 4

47

您可以使用:


   WebView webView = // ...

   webView.loadUrl("file:///myPath/myFile.html");

在 Android 应用程序中,可以从 3 种类型的位置读取文件:

  • 内部存储:每个应用程序都有自己的,文件名是相对于这个位置的。URL 形成file:///myFolder/myFile.html

  • 外部存储:需要许可并且可能并不总是可用。通过调用Environment.getExternalStorageDirectory()获取根文件夹。因此,使用以下方法构建 URL:String url = "file:///" + Environment.getExternalStorageDirectory().toString() + File.separator + "myFolder/myFile.html"

  • 资产:存储在 apk 中。只读访问。URL 形成file:///android_asset/myFolder/myFile.html(另请参阅将 Android 资源加载到 WebView 中

于 2012-04-19T07:51:31.917 回答
5

在 Android 4.4 KitKat 中,抛出“不允许加载本地资源:file:///..”。当 loadURL 出现时,我发现的唯一替代方法是“loadDataWithBaseURL”。

webView.loadDataWithBaseURL("file:///android_asset/demo/",
                             tmpDocumentText,"text/html", "UTF-8", null);
于 2014-03-11T10:43:15.687 回答
3

WebView 有 loadData 方法http://developer.android.com/reference/android/webkit/WebView.html

您需要做的就是将文件读入 String,然后使用 loadData 将其提供给 WebView。

于 2012-04-19T07:50:35.897 回答
0

如果文件存在于 android studio 项目中,任何一个都可以使用这种方式来加载文件(请注意 android_res 实际上是 res 文件夹,不应被替换)

webView.loadUrl("file:///android_res/drawable/FILENAME.EXTENSION");

但如果这不起作用,请尝试另一种加载文件的方式,例如

webView.loadDataWithBaseURL("file:///android_asset/demo/",tmpDocumentText,
                         "text/html", "UTF-8", null);
于 2021-12-28T10:54:29.280 回答