我想使用HTML和javascript构建基于浏览器的离线应用,以便在Android平板电脑上收集调查数据。该应用程序将包含一些静态页面,其中包含用于输入数据的表单,然后使用Web Storage或IndexedDB在本地存储。但是,我还想构建一个小型原生Android应用程序,它可以获取这些数据并将其传输到其他设备。这是可能的,如果可以的话,我该怎么做呢?
具体来说,我想了解本机应用程序是否以及如何访问浏览器的数据存储(我可以管理其余部分)。我更喜欢使用Android浏览器,但如果使其更容易,可以使用任何其他浏览器。我发现这个blog post表明它可能是可能的,但我会很感激Android浏览器存储数据的位置以及其他应用程序访问它的容易程度。
答案 0 :(得分:4)
不幸的是,我不认为数据流可以按照您想要的方式运行。在Chromium WebKit实现中,IDB将数据存储在您无法访问的levelDB文件中(按设计)。
那么我们如何让Java和JavaScript一起玩得很好呢?这是一个很好的问题!我认为,将Java数据转换为IDB数据的唯一好方法是通过客户端。
我有很好的IDB印章,但我的Android经验是非制作。据我所知,这是一个建议的解决方案:
.html
<script>
file://android_asset/blah.json
等本地URI的webview,然后运行一些IDB代码将其批量插入IDB 因此,“本机应用程序是否以及如何访问浏览器的数据存储”的答案是:尝试相反的方法。设计它以让您的浏览器访问您的本机应用程序数据存储。
答案 1 :(得分:1)
最简单,最强大的方法,可以将所有记录序列化并在首次运行时加载到您的应用中。
答案 2 :(得分:0)
如果您愿意尝试稍微不同的方法,那么这是可能的:
从HTML5应用程序中提取数据非常棘手,但将数据推送到本机应用程序更加容易。您的HTML5应用必须具有本机容器。容器API是否包含访问本机ContentProviders的方法?如果没有,您可以将自己的本机代码添加到容器中吗?基本上,如果您可以访问ContentProviders,那么您的本机应用程序只需要实现具有插入权限的ContentProvider(可以仅限于您的HTML5应用程序)。插入后,本机应用程序可以对数据执行任何操作,包括将其广播到其他设备。
如果你坚持从HTML5应用程序中提取数据,这可能只有当本机和HTML5应用程序实际上是同一个应用程序时才有可能,并且只有当你的容器允许你添加你自己的本机代码时才有可能。然后,您可以通过WebStorage课程直接访问WebView的存储空间。