如何让基于 Web 视图的 Android 应用程序在磁盘上存储大量文件?

How can I let a web view-based Android app store large amounts of files on disk?

我正在制作一个 Android 应用程序,它允许用户在从 RSS 提要中检索视频文件后将它们存储在磁盘上。该应用程序将在网络视图中 运行。我正在使用 XHR 请求获取视频。

如何从 javascript 向 java 发送包含下载文件数据的消息?

我的意思是……我可以将文件存储在 Web 视图浏览器中的 indexdb 中。但是,浏览器缓存 API 像应用程序缓存和 indexdb 有严格的配额。我不认为我可以在这些配额内存储很多视频文件。

而且配额更新程序 API 似乎也已弃用,因此我无法更改网络存储配额:http://developer.android.com/reference/android/webkit/WebStorage.QuotaUpdater.html

似乎我唯一的选择是从 Web 视图发送文件数据作为 java 代码处理的消息(并将文件存储在本地磁盘上)。稍后,我可以让 java 告诉 Web 视图它之前存储过数据。如何使用 android API?

发送这样的消息

I’m fetching the videos with XHR requests

即兴发挥,我不会。通常视频文件很大,如果你真的想下载它们,你不能只从 activity 下载,无论是否由 WebView 提供支持。

It seems like my only alternative is to send file data from the web view as a message for java code to handle (and store the file on local disk). Later, I can have java tell the web view that it had previously stored data. How can I send such a message using the android API?

WebView 上使用 addJavascriptInterface() 将 Java 对象注入到 WebView 的 Java 脚本环境中。在那个 Java 对象上,有一个方法可以下载视频文件,使用 Service(可能是 IntentService)或 DownloadManager,给定 URL文件。这不仅会解决您如何将文件存储在设备本地的问题,而且如果用户在下载过程中离开您的应用程序,视频更有可能真正成功下载。