繁体   English   中英

ngCordova s​​qlite插件数据库在Android上写入错误

[英]ngCordova sqlite plugin database write error on Android

我有一个使用Cordova(离子框架)和ngCordova和cordovaSQLite插件的项目。 已安装插件,已将js添加到html,将WRITE_EXTERNAL_STORAGE权限添加到androidmanifest,并在我的config.xml中添加了以下两行

<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="AndroidExtraFilesystems" value="sdcard,cache" />

但是,当我运行示例代码时:

$cordovaSQLite.openDB({name: "wt.db"});
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS people (id integer primary key, firstname text, lastname text)");

我收到错误E/cutils(1910): Failed to mkdirat(/storage/usbdisk0/Android): Read-only file system

我在Android设备(运行AOKP的S3)上进行了检查,并且有一个空的/ storage / usbdisk0,但其中没有Android文件夹,即使有超级用户,我也无法创建它。 我也有/ storage / sdcard0和/ storage / sdcard1和/ storage / emulated(其中0和旧版内部链接到内部sd卡)。

我假设问题是该插件用于存储数据库的默认目录对我的手机而言是错误的,但这意味着对于任何人的手机而言,它可能都是错误的。

如果我的假设是正确的,我如何获得该插件以将数据库放置在正确的位置?

我只是读了我的config.xml首选项(我已经从一些文档复制并粘贴了)的实际意思。 问题出在<preference name="AndroidPersistentFileLocation" value="Compatibility" /> ,这导致在错误的位置创建文件。

如果我将两个首选项行都替换为<preference name="AndroidPersistentFileLocation" value="internal" /> ,则我什至无需再请求WRITE_EXTERNAL_STORAGE权限,即可正常运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM