【问题标题】:ngCordova sqlite plugin database write error on AndroidAndroid上的ngCordova s​​qlite插件数据库写入错误
【发布时间】:2014-11-27 10:50:26
【问题描述】:

我有一个项目使用 Cordova(离子框架)和 ngCordova 和 cordovaSQLite 插件。插件安装完毕,html中添加了js,androidmanifest中添加了WRITE_EXTERNAL_STORAGE权限,在我的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 和 legacy 内部链接到内部 sd 卡)。

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

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

【问题讨论】:

    标签: android sqlite cordova ionic-framework


    【解决方案1】:

    我刚刚阅读了我的 config.xml 首选项(我从一些文档中复制和粘贴的)实际所说的内容。问题是 &lt;preference name="AndroidPersistentFileLocation" value="Compatibility" /&gt; 导致文件创建在错误的位置。

    如果我用&lt;preference name="AndroidPersistentFileLocation" value="internal" /&gt; 替换两个首选项行,我什至不再需要请求 WRITE_EXTERNAL_STORAGE 权限,它工作正常。

    【讨论】:

      猜你喜欢
      • 2020-05-12
      • 1970-01-01
      • 2016-01-09
      • 2016-03-27
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      相关资源
      最近更新 更多