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)上的数据库吗?的主要内容,如果未能解决你的问题,请参考以下文章