2013-02-14 94 views
4

我正在构建一个Phonegap/Cordova应用程序,用于下载一些文件并将其保存在设备上。为此,我使用File API。Phonegap/Cordova文件API。删除卸载文件

window.requestFileSystem(LocalFileSystem.PERSISTENT, 
    0, 
    function (fileSystem) { 
     rootPath = fileSystem.root.fullPath; 
    }, 
    fail 
); 

在iOS这将设置rootPath到应用程序,这是很好的私有目录。在Android上,这会将rootPath设置为外部存储器的根目录,这有点问题,因为这些文件并未绑定到应用程序,并且在删除应用程序时未删除。据我了解,在Android上执行此操作的正确方法是使用getExternalFilesDir。如何通过Phonegap获得getExternalFilesDir的功能?

回答

4

你想通过JS请求外部文件目录。

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, 
    function (fileSystem) { 
     fileSystem.root.getDirectory("Android/data/com.my.app/files", 
      {create: true, exclusive: false}, 
      function(dirEntry) { 
       rootPath = dirEntry.fullPath; 
      }, fail);; 
    }, 
    fail 
); 

现在你有一个路径指向一个区域,当应用程序被卸载时将被清除。

+0

谢谢。这意味着我必须为Android和iOS解决它(稍微)不同,我猜?出于好奇,是因为对旧版Android(SDK <8)的支持,还是有其他原因导致此行为? – Reason 2013-02-15 13:53:24

+1

当我最初做File API时,决定使用外部存储器来保存文件,因为内部驱动器缺少存储空间。我们实际上正在考虑转移到/ data/data/{package name}目录,以便更好地与iOS/BB保持一致。我的建议是创建一个LocalFileSystem.APP,它将在每次习惯改变后最终成为PERSISTENT常量。 – 2013-02-17 04:54:10

+0

我最近从2.3改为2.5。现在看起来东西存储在data/data/com.my.app /而不是/ mnt/sdcard /中。这是否意味着问题在这些版本中得到解决,还是需要担心? – Reason 2013-03-06 12:50:16

0

您无法跟踪卸载事件。但要删除下面给出的代码目录。

function deleteDirectory(directoyName){ 
    $scope.fs.root.getDirectory(directoyName,{ create: false, exclusive: false }, function(dirEntry) { 
     dirEntry.removeRecursively(function() { 
     console.log('Directory Successfully Removed.'); 
     }, errorHandler); 
    }, errorHandler); 
    } 
相关问题