2013-02-14 73 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); 
    } 
相關問題