簡體   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