我正在开发一个需要文件 IO 的工作灯应用程序。我已经在一个 android 项目中单独编写了该代码。谁能告诉我如何将两者合二为一?
问问题
1006 次
2 回答
5
正如 Idan 所说,没有办法将您现有的本机应用程序移植到 Worklight 混合应用程序。但是,您可以利用在不同环境(例如 Android 和 iOS)中与 Worklight 混合应用程序一起工作的开箱即用的文件 API 。如果您创建一个Cordova 插件,您将需要为您希望支持的所有环境创建一个插件。
以下是用于写入文件的文件 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);
}
这是读取文件的示例:
// 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);
}
于 2013-03-21T22:13:31.883 回答
2
无法将现有的 Worklight Hybrid 应用程序与现有的 Native 应用程序结合起来。Worklight 应用程序的正确方法是编写一个 Cordova 插件来在事物的本机方面执行您想要的操作。
请参阅这些培训模块,其中解释了如何做到这一点:http ://www.ibm.com/developerworks/mobile/worklight/getting-started.html#cordova
于 2013-03-21T13:01:23.520 回答