Есть ли способ узнать конкретное свободное пространство (Android и iOS), используя Apache Cordova?

1

Недавно я работал над этой темой на моей фактической работе, и все исследования пошли на эту функцию availableBytes, которую вы можете увидеть ниже:

function onInitFs(fs) {
    var appDirectory = fs.root;
    window.alert("Directorio de trabajo: " + appDirectory.toURL());
    availableBytes(function (free_bytes) {
    console.log("Interal free space(root + internal): " + (free_bytes / (1024 * 1024 * 1024)).toFixed(0) + "GB");
 });
}
//Function used to know available space in internal storage
function availableBytes(callback, start, end) {
     callback = callback == null ? function () {} : callback
     start = start == null ? 0 : start
     end = end == null ? 1 * 1024 * 1024 * 1024 * 1024 : end 
     //starting with 1 TB
     limit = 1024 // precision of 1kb
     start_temp = start
     end_temp = end
     callback_temp = callback
     if (end - start < limit)
         callback(start)
     else {
         window.requestFileSystem(LocalFileSystem.PERSISTENT, parseInt(end_temp - ((end_temp - start_temp) / 2)), function (fileSystem) {
              setTimeout(function () {
                 availableBytes(callback_temp, parseInt(parseInt(end_temp - ((end_temp - start_temp) / 2))), end_temp)
        }, 0)
     }, function () {
        setTimeout(function () {
            availableBytes(callback_temp, start_temp, parseInt(end_temp - ((end_temp - start_temp) / 2)))
        }, 0)
     })
 }
}

Как вы можете видеть, мы можем легко узнать размер внутреннего хранилища, но корневой (где я храню загруженные видео и музыку, а там, где клиенты не могут легко добраться), нельзя "спросить" так... Кто-нибудь знает правильный способ сделать это?

Теги:
cordova

1 ответ

1

Чтобы получить доступное пространство устройства, вы должны добавить плагин cordova-file-plugin: https://github.com/apache/cordova-plugin-file/

Затем, после вашего устройства, вы можете запустить следующий код:

cordova.exec(function(result) {
    alert("Free Disk Space: " + result);
}, function(error) {
    alert("Error: " + error);
}, "File", "getFreeDiskSpace", []);

Это предупредит об общей площади в килобайтах, просто преобразуется в мегабайты или гигабайты.

  • 0
    Это хороший ответ, но свободное место, предоставляемое этой функцией, является внутренним хранилищем, а не корневым хранилищем, в котором я собираюсь хранить контент, загруженный приложением. Я подумал о том, чтобы реализовать, как говорит Акис: * Сначала я попытаюсь «записать» большой файл, и если он выдаст ошибку во время записи, я буду рекурсивно вызывать ту же функцию, пока она не выдаст OK. код, и это будет свободное пространство этого конкретного пространства хранения.
  • 0
    @DavidTelegimTv да, вы правы, я также нашел плагин, который говорит, что он может делать то, что вы хотите, но я никогда не использовал его, это github.com/sqli/sqli-cordova-disk-space-plugin . Если у вас есть время, пожалуйста, проверьте его

Ещё вопросы

Сообщество Overcoder
Наверх
Меню