将本机应用程序与worklight项目相结合

时间:2013-03-21 10:36:33

标签: android ibm-mobilefirst

我正在开发一个需要文件IO的worklight应用程序。我已经分别在android项目中编写了该代码。谁能告诉我如何将它们合二为一?

2 个答案:

答案 0 :(得分:5)

就像Idan所说,没有办法将现有的本机应用程序移植到Worklight混合应用程序。但是,您可以利用Worklight Hybrid Applications在不同环境(例如Android和iOS)中开箱即用的File API。如果您创建Cordova Plugin,则需要为您希望支持的所有环境创建插件。

以下是Writing a file的文件I / O API的快速示例:

// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// Cordova is ready
//
function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
    fileSystem.root.getFile("readme.txt", {create: true, exclusive: false}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.createWriter(gotFileWriter, fail);
}

function gotFileWriter(writer) {
    writer.onwriteend = function(evt) {
        console.log("contents of file now 'some sample text'");
        writer.truncate(11);  
        writer.onwriteend = function(evt) {
            console.log("contents of file now 'some sample'");
            writer.seek(4);
            writer.write(" different text");
            writer.onwriteend = function(evt){
                console.log("contents of file now 'some different text'");
            }
        };
    };
    writer.write("some sample text");
}

function fail(error) {
    console.log(error.code);
}

以下是Reading文件的示例:

// Wait for Cordova to load
//
function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

// Cordova is ready
//
function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
    fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.file(gotFile, fail);
}

function gotFile(file){
    readDataUrl(file);
    readAsText(file);
}

function readDataUrl(file) {
    var reader = new FileReader();
    reader.onloadend = function(evt) {
        console.log("Read as data URL");
        console.log(evt.target.result);
    };
    reader.readAsDataURL(file);
}

function readAsText(file) {
    var reader = new FileReader();
    reader.onloadend = function(evt) {
        console.log("Read as text");
        console.log(evt.target.result);
    };
    reader.readAsText(file);
}

function fail(evt) {
    console.log(evt.target.error.code);
}

答案 1 :(得分:2)

无法将现有的Worklight Hybrid应用程序与现有的Native应用程序相结合。 Worklight应用程序的正确方法是编写Cordova插件,以便在本机方面执行您想要的操作。

请参阅以下培训模块,其中说明了如何执行此操作:http://www.ibm.com/developerworks/mobile/worklight/getting-started.html#cordova