任何人都可以解釋如何使用Android的Phonegap文件API列出頁面上的文件文件夾?FIle API - Phonegap?
如果可能,我想列出所有的.mp3
文件,但是已經通讀了所有phonegap文檔(http://docs.phonegap.com/en/1.0.0/phonegap_file_file.md.html),並且完全不知道!
任何人都可以解釋如何使用Android的Phonegap文件API列出頁面上的文件文件夾?FIle API - Phonegap?
如果可能,我想列出所有的.mp3
文件,但是已經通讀了所有phonegap文檔(http://docs.phonegap.com/en/1.0.0/phonegap_file_file.md.html),並且完全不知道!
它在@ $$中有點痛苦,但可行。開始使用此代碼:
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap is ready
//
function onDeviceReady() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
}
function onFileSystemSuccess(fileSystem) {
fileSystem.root.getDirectory("Music", {create: false, exclusive: false}, getDirSuccess, fail);
}
function getDirSuccess(dirEntry) {
// Get a directory reader
var directoryReader = dirEntry.createReader();
// Get a list of all the entries in the directory
directoryReader.readEntries(readerSuccess,fail);
}
function readerSuccess(entries) {
var i;
for (i=0; i<entries.length; i++) {
// Assuming everything in the Music directory is an mp3, go nuts
// otherwise check entries[i].name to see if it ends with .mp3
}
}
我正在寫一個IDE之外的所有本示例代碼所以可能會有錯誤,但應該讓你去。
Paul,你添加了一個fail()函數嗎?這在Simon的示例代碼中將是必需的。該api docs example有:
function fail(evt) {
console.log(evt.target.error.code);
}
您還可以節省一個步驟西蒙的代碼,如果你只是想一個概念證明,因爲fileSystem.root已經是一個dirEntry(從而節省您不必使用的潛在馬車一步一個目錄名稱,如「音樂」可能會或可能不會在那裏):
function onFileSystemSuccess(fileSystem) {
var directoryReader = fileSystem.root.createReader();
// Get a list of all the entries in the directory
directoryReader.readEntries(readerSuccess,fail);
}
function readerSuccess(entries) {
var i;.......
它適合我。
但是,我得到的是應用程序的根目錄的內容,顯然,我的應用程序被稱爲be.qan.blaActivity,所以,如果我問它fileSystem.root.name
它告訴我「be.qan」和fileSystem.root.path
未定義。因此,我的問題在於:我如何才能擺脫這個沙盒,如果那真的是我所坐的,我可以訪問sd_card目錄或文件系統的其他部分(因爲iOS甚至沒有外部的存儲)?
我通過readerSuccess
中的文件名獲得的名稱是諸如「AsyncFileManager」等搜索時甚至不顯示的「databases」,「app_database」,「cache」和「lib」我強烈認爲它們是Cordova爲應用創建的虛擬文件系統的一部分。可能還有很多我錯過了,人們比我更直接地認識我,但這就是我迄今爲止所猜測的。
現在,在回答自己的問題時,就瀏覽設備的整個文件系統而言,我現在嘗試使用'window.resolveLocalFileSystemURI()'而不是'window.requestFileSystem',它使整個過程變得更加簡單。使用'window.resolveLocalFileSystemURI(「file:///」),函數(dirEntry){var directory directory = dirEntry.createReader(); directoryReader.readEntries(readerSuccess,fail); },失敗);'讓你直接進入根目錄,你可以從那裏取得它。 – yogibimbi
您好我使用此代碼和它的作品對我..可以試試
$('#recordingList').on('pagecreate', function(event) {
generateRecordingList();
});
function generateRecordingList(){
//request for the file system
window.resolveLocalFileSystemURI("file:///sdcard/rem", onFileSystemSuccess, onError);
}
function onFileSystemSuccess(fileSystem){
alert("FileSystem success : " + fileSystem.name);
}
function onError(error){
alert(error.target.error.code);
}
乾杯您的幫助西蒙,雖然它不會走過去的onFileSystemSuccess(文件系統)功能對我來說... – Dancer
可能是因爲在fileSystem.root下沒有Music文件夾。確保你在正確的根目錄下,並且你有一個音樂文件夾。你也可以給它「」來訪問沒有任何文件夾的根目錄。他的代碼在iPhone(ios)上爲我工作。 – c0d3Junk13