cordova-sqlite-ext 可以读取 sd 卡(Android)上的数据库吗?

Posted

技术标签:

【中文标题】cordova-sqlite-ext 可以读取 sd 卡(Android)上的数据库吗?【英文标题】:Can cordova-sqlite-ext read db on sd card (Android)? 【发布时间】:2018-06-27 07:40:24 【问题描述】:

我已经搜索了小时数,但我真的不知道是否可以使用 cordova-sqlite-ext 插件在 android 上读取我的 sd 卡(手机的设备存储)上的 sqlite 文件。

https://www.npmjs.com/package/cordova-sqlite-storage 上面写着:

litehelpers/中提供以下功能 科尔多瓦-sqlite-ext:... - 预填充数据库(Android/ios/macOS/Windows)

所以我需要的是 webapp 之外的 sqlite 数据库和可以从该数据库中读取的 phonegap 插件。那么,上面的插件能做到这一点对吗???

或者有没有其他方法可以完成这项任务?

【问题讨论】:

你读过this quetion吗?它可以满足您的要求,您所需要的只是能够访问您的 SD 卡文件 谢谢。但这无济于事。问题是,我无法访问 webapp 之外的 sql 语句的数据库。与文件相同。 webapp 无法访问 sd 卡上的文件。只有使用 cordova-plugin-file 才能做到这一点。我需要用于 sql 数据库的相同的“接触外部世界”功能 【参考方案1】:

cordova-sqlite-storage 将其数据库存储在应用程序的私有存储目录​​中。 这只能由您的应用访问,并且位于内部数据分区上。 例如,如果您的应用程序包 ID 是 foo.bar.com,而您的数据库有 name: store.db,那么它将位于 /data/data/foo.bar.com/databases/store.db。 位置data/data/foo.bar.com/ 引用为cordova.file.applicationStorageDirectory,来自cordova-plugin-file

您可以使用cordova-sqlite-storage 的cordova-sqlite-evcore-extbuild-free 变体:

自定义Android数据库位置(支持外部存储目录)

“外部存储目录”位于“SD 卡”上,通常是通过挂载点/sdcard//storate/emulated/0/ 访问的内部内存分区。 从 Android 4.4 开始,应用程序只能在 SD 卡上的“应用程序沙箱”目录中具有写入权限,例如/sdcard/Android/data/foo.bar.com/ (cordova.file.externalApplicationStorageDirectory)。

SD 卡的所有其他区域都是只读的(例如,/sdcard/ - cordova.file.externalRootDirectory 的根)所以虽然您可以从此处的数据库中读取,但要写入它,您需要将其复制到应用程序的私有或外部存储目录。例如,您可以使用cordova-plugin-file 来执行此操作。

【讨论】:

非常感谢您提供指向 cordova-sqlite-evcore-extbuild-free 的链接!!!这似乎正是我正在寻找的!我已经搜索了小时数,但您的链接听起来很完美

以上是关于cordova-sqlite-ext 可以读取 sd 卡(Android)上的数据库吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能在 C 中读取 Ctrl+S?

pandas 读取带文件头的数据。并且分隔符用s+

三级封锁协议

ionic 4 sqlite-ext 未加载预填充的数据库

共享锁和排它锁的理解

数据库的S锁和X锁,两段锁协议