java – IndexedDB在Android原生app中工作

我们已经申请查看一些特定材料.在材质类型中, HTML5演示文稿显示在应用程序内的WebView小部件中.现在我们需要获得有关此视图的详细信息(例如幻灯片放映持续时间,列表元素选择可用的位置等).

这是客户想要的 – 我们无法改变它.

我们决定在HTML5中使用IndexedDB在本地存储信息.现在存储工作(我知道:)).接下来的问题是通过应用程序获取此信息,但尚未解决.不幸的是,谷歌并没有帮助我.

如果我知道它的路径,如何从IndexedDB文件中获取信息?或者您是否知道将数据从html传输到本机应用程序的另一种方法?

附:编写自定义浏览器无法解决问题.

更新

找到从JS加载文件的解决方案.在Chrome浏览器中,它会自动保存下载内容.在Android应用程序中我设置为WebView对象DownloadListener来监听文件保存事件.

捕获保存文件非常有效.但是url路径看起来像blob:file / …而且我无法从中获取信息.尝试使用ContentResolver,创建File对象,替换blob:string什么都没有,启动ACTION_VIEW意图 – 什么都没有帮助.

更新

试图使用DownloadManager和DownloadManager.Request – 它抛出以下异常

java.lang.IllegalArgumentException: Can only download HTTP/HTTPS URIs: file:///fa4857ad-0e86-454a-a341-123729e9ece0

与blob相同:文件uri.

最佳答案 是否需要使用IndexedDB进行通信?

如果没有,您可以添加一个JavaScript界面​​.只需将数据作为JSON字符串传递,然后在java端解码.

https://developer.android.com/guide/webapps/webview.html#BindingJavaScript

介意安全(不允许用户浏览到不同的页面,清理传入的数据,……);-)

点赞