捆绑和访问BlackBerry PhoneGap / Cordova文件系统中的文件

时间:2013-01-15 20:59:32

标签: file sqlite cordova blackberry

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

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

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

使用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);      
}

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

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我是否应该存储文件,如果我想在应用程序中访问它们?

2 个答案:

答案 0 :(得分:0)

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

我在我的一个iOS Phonegap应用程序中执行此操作(使用非常简单的数据库授予)。它运作得很好。

答案 1 :(得分:0)

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