2016-03-23 2 views
0

Я пытаюсь получить внешний путь хранения в Phonegap. Я использую этот код, но он никогда не обрабатывает правильный путь к SDCard.Phonegap На Android 6 - Как получить внешний путь хранения

(function(){ 
    window.appRootDirName = ".myapp"; 
    document.addEventListener("deviceready", onDeviceReady, false); 

    function onDeviceReady() { 
     alert(cordova.file.externalRootDirectory); 
     console.log("device is ready"); 
     window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 
    } 

    function fail() { 
     console.log("failed to get filesystem"); 
    } 

    function gotFS(fileSystem) { 
     console.log("filesystem got"); 
     fileSystem.root.getDirectory(window.appRootDirName, { 
      create : true, 
      exclusive : false 
     }, dirReady, fail); 
    } 

    function dirReady(entry) { 
     window.appRootDir = entry; 
     alert(JSON.stringify(window.appRootDir)); 
    } 
})(); 

также

<preference name="AndroidPersistentFileLocation" value="Internal" /> 

и

<preference name="AndroidPersistentFileLocation" value="Emulated" /> 

не помогает.

Есть ли способ получить правильный путь SDCard на Android 6 с помощью телефонного разговора?

ответ

0

Попробуйте этот.

document.addEventListener("deviceready", onDeviceReady, false); 

// device APIs are available 
// 
function onDeviceReady() { 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail); 
} 

function onFileSystemSuccess(fileSystem) { 
    fileSystem.root.getDirectory("App_files", {create: false, exclusive: false}, onGetDirectoryWin, onGetDirectoryFail); 
} 

function fail(evt) { 
    console.log(evt.target.error.code); 
} 

var onGetDirectoryWin = function(parent) { 

} 
var onGetDirectoryFail = function() { 
    console.log("error getting dir") 
} 
+0

Нет, он не работали для меня, она возвращается файл: /// данные/пользователь/0/com.myapp.music/files/files/ – fobus

1

Это, как я сделал это работать в Android, а также в прошивке,

function writeFile() { 
      if (sessionStorage.platform.toLowerCase() == "android") { 
       window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, onFileSystemSuccess, onError); 
      } else { 
       window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onError); 
      } 

     }  

     function onError(e) { 
      alert("onError"); 
     }; 

     function onFileSystemSuccess(fileSystem) { 
      var entry = ""; 
      if (sessionStorage.platform.toLowerCase() == "android") { 
       entry = fileSystem; 
      } else { 
       entry = fileSystem.root; 
      } 
      entry.getDirectory("Folder_Name", { 
       create: true, 
       exclusive: false 
      }, onGetDirectorySuccess, onGetDirectoryFail); 
     }; 

     function onGetDirectorySuccess(dir) { 
      dir.getFile(filename, { 
       create: true, 
       exclusive: false 
      }, gotFileEntry, errorHandler); 
     }; 

     function gotFileEntry(fileEntry) { 
      // logic to write file in respective directory 
     }; 

     function errorHandler(e) { 
      // handle error 
     } 
+0

@fobus. Поскольку вы тестируете на Android 6, создание папки может завершиться неудачно для вас из-за проблемы с выпуском плагина cordova. Возможно, вам придется вытащить последнюю версию FileUtils.java из папки android src в файл-плагин github, чтобы сделать эту работу. Надеюсь, поможет – Gandhi

Смежные вопросы