0

我正在使用 Cordova / PhoneGap 构建一个 BlackBerry 应用程序。我的最终目标是能够将预填充的 SQLite 数据库与应用程序捆绑在一起。

我看过一些教程建议在 Assets 文件夹中包含所需的文件并在第一次加载应用程序时加载它。

为了实现预填充数据库的结束,我将要访问黑莓设备上的本地文件系统。

使用 Cordova 文档中提供的示例,我汇总了以下内容:

onDeviceReady: function() {
    app.receivedEvent('deviceready');
    var fail = function(err){console.log(err)};
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, 
        function(fs){
            var reader = fs.root.createReader().readEntries(
                function(entries){
                    console.log("FS:"+entries)
                },
                fail);
        },fail
    );
    window.resolveLocalFileSystemURI("file:///store/home", 
        function(uri){
            console.log(uri);
        }, 
        fail);      
}

在所有情况下,模拟器上的文件列表都是空的(专门尝试使用 chromeipple 插件)

missing exec:File.resolveLocalFileSystemURI ripple.js:39
["file:///store/home"] ripple.js:39
TypeError
 ripple.js:39
TypeError: Cannot read property 'root' of undefined
    at Object.module.exports.resolveLocalFileSystemURI (chrome-    extension://geelfhphabnejjhdalkjhgipohgpdnoc/ripple.js:39:7398)
    at module.exports.exec (chrome-    extension://geelfhphabnejjhdalkjhgipohgpdnoc/ripple.js:39:19386)
    at module.exports (http://telusbb.com/cordova-2.3.0.js:9602:5)
    at app.onDeviceReady (http://telusbb.com/js/index.js:73:10)
    at Channel.fire (http://telusbb.com/cordova-2.3.0.js:690:23)
    at http://telusbb.com/cordova-2.3.0.js:219:47 ripple.js:39
File ripple.js:46
    resolveLocalFileSystemURI 
 FS:

我无法从文档中找出我想在哪里存储一个文件以使其出现在 PhoneGap 文件系统中。

目前我的资产文件夹<sampleapplciation>/www/assets在如果我想在应用程序中访问它们,我应该存储文件的另一个路径吗?

4

2 回答 2

0

我认为您最好的选择是在包之外构建您的预打包 SQLite DB,然后使用 INSERT 查询,在应用程序首次启动时构建 DB。

我正在我的一个 iOS Phonegap 应用程序中执行此操作(当然,使用非常简单的数据库)。它完美地工作。

于 2013-02-04T17:26:42.777 回答
0

可能无关紧要,但我相信 Ripple 问题与您计算机上文件的位置有关。顺便说一句,我建议你使用 WebWorks SDK,它非常棒,有很多原生 API 访问,也许 IO api 可以帮助你满足你的需要,而且使用 Ripple 或命令行打包和安装非常简单(调试该设备在支持 Web 检查器的设备上也非常出色)。

于 2013-06-09T11:07:26.503 回答