因此,我正在用angularjs 1构建一个cordova /
phonegap应用程序,并且试图在该应用程序的专用目录/沙箱中保存和读取一个名为calendar.txt的文件,但不能。
调试时我的控制台日志显示没有错误,如果文件不存在则正在创建文件,并且文件正在正确读取。但是事实并非如此。在设备上构建并运行时,不会保存数据。在指定的位置也没有创建文件。
我在控制台上记录了它试图使用的路径,就是它:file:///data/data/com.adobe.phonegap.app/files/calendar.txt
这是我用来打开文件的代码:
$rootScope.openFile = function(){
var pathToFile = cordova.file.dataDirectory + "calendar.txt";
console.log('path = ' + pathToFile);
window.resolveLocalFileSystemURL(pathToFile,
function(fileEntry){
fileEntry.file(function (file) {
var reader = new FileReader();
reader.onloadend = function (e) {
$rootScope.calendar = JSON.parse(this.result);
console.log('file opened');
console.log(JSON.parse(this.result));
};
reader.readAsText(file);
}, function(error){});
}, function(error){
if(error.code == FileError.NOT_FOUND_ERR){
$rootScope.calendar = new Year();
console.log('no file found so it was created');
$rootScope.saveFile();
}
else{
console.log(error);
}
});
};
这是我保存文件的代码:
$rootScope.saveFile = function(){
var data = JSON.stringify($rootScope.calendar, null, '\t');
var fileName = "calendar.txt"
window.resolveLocalFileSystemURL(cordova.file.dataDirectory,
function(directoryEntry){
directoryEntry.getFile(fileName, { create: true },
function (fileEntry) {
fileEntry.createWriter(
function (fileWriter) {
var blob = new Blob([data], { type: 'text/plain' });
fileWriter.write(blob);
console.log('file saved');
},
function (error){});
},
function (error){}
);
},
function(error){
console.log("Saving Error: Error during finding directory", error.message);
}
);
};
我使用了本教程,以了解更多信息:Cordova文件插件教程
我究竟做错了什么?
我认为您在Android中也遇到了这个问题,因为我也面临同样的问题。根据我的理解和谷歌搜索,在android中(至少在android
5中),除非手机已扎根,否则您无法在应用程序数据目录中写入内容。因此,您可能不得不改用externalRootDirectory。
例如:
window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory,successCallback,errorCallback);
希望能帮助到你。
为android插件依赖项“cordova插件”安装“cordova插件文件传输”时生成APK时出错-file@4.3.3“已获取,使用该版本。android上已安装依赖插件“cordova插件文件”。安装android的“cordova插件文件路径”安装android插件依赖的“cordova插件地理位置”cordova插件-compat@1.2.0“已获取,使用该版本。为android插件安装
我有麻烦-使用ionic创建一个android构建。它最初运行良好。我尝试将android目标平台更改为19-这是4.4.2 kitkat。 这是错误消息-显然cordova文件插件有问题。当我将平台sdk目标更改为19时。 任何帮助将不胜感激。 /myapp/platforms/android/src/org/apache/cordova/file/LocalFilesystem.java:41
C:\My App\test 科尔多瓦插件添加科尔多瓦-插件-地理Geofence-保存npm警告可选跳过可选依赖:fsevents@1.2.4(node_modules\fsecents): npm警告不支持跳过可选依赖:fsevents@1.2.4不支持的平台:想要{"os":"darwin","arch":"any"}(当前:{"os":"win32","arch":"x64"}) mini
一般的, 插件应该放置在APPLICATION_PATH下的plugins目录, 这样在自动加载的时候, 加载器通过类名, 发现这是个插件类, 就会在这个目录下查找. 当然, 插件也可以放在任何你想防止的地方, 只要你能把这个类加载进来就可以参见 Yaf_Plugin_Abstract 使用Bootstrap
问题内容: 不知何故,我的应用程序中安装了许多cordova插件,因此,它需要访问几乎所有内容-从我的联系人到当前位置(即使此应用程序不需要此功能)。 这个应用程序是通过jenkins构建的,据我了解,一种解决方案是用单个命令删除每个插件,因此它将像: 但是有时它会显示一些错误,而对于詹金斯来说,任何错误都会导致构建失败,因此是否有任何命令可以删除所有插件?(在安装过程中,需要任何应用程序才能正常
每当我将添加到解决方案中时,在构建过程中就会出现一个错误:app:transformClassesWithStackFramesFixerforDebug。在下面添加了整个输出。Project是一个空的Cordova插件,除了安装的插件什么都没有。感谢援助。下面添加了Stacktrace。我用的是最新的科尔多瓦版本。 目前,我尝试的是: null