Подтвердить что ты не робот

Как получить объект FileEntry при использовании моделирование Кордовы

Я пытаюсь выполнить Принять снимок и получить объект FileEntry Object для плагина камеры Cordova. Я использую Кордову Visual Studio 2017 для проверки примера, выбрав "Имитировать в браузере"

Выполнение снимка выполняется, и изображение отображается в симуляторе, используя тот же imageUrl, который передается плагину файлов Cordova в этом фрагменте кода:

function cameraSuccess(imageUri) {
  window.resolveLocalFileSystemURL(imageUri, function () {
    console.log('success')
  }, function (error) {
    console.log(error.message);
  });

  return imageUri;
}

Однако вызов функции resolveLocalFileSystemURL не выполняется со следующей ошибкой:

URI, предоставленный API, был искажен, или результирующий URL-адрес данных превышено ограничение длины URL-адресов для URL-адресов данных.

Что мне нужно сделать, чтобы это сработало?

ИЗМЕНИТЬ Я нашел эту инструкцию в разделе Chrome Quirks в документации плагина

Метод resolveLocalFileSystemURL требует, чтобы входящий URL-адрес имел префикс файловой системы. Например, параметр url для resolveLocalFileSystemURL должен быть в форме файловая система: файл:///persistent/somefile.txt в отличие от формы file:///persistent/somefile.txt в Android.

Итак, я изменил код на:

  if (device.isVirtual) {
    if (!window.isFilePluginReadyRaised) {
      //added to check another potential Chrome quirk
      //the alert wasn't never shown so I don't think it an issue
      alert('!window.isFilePluginReadyRaised');
    }

    imageUri= 'filesystem:' + imageUri;
  }

window.resolveLocalFileSystemURL(imageUri, function () {
  console.log('success');
}, function (error) {
  console.log(error.message);
});

Теперь сообщение об ошибке:

Было установлено, что определенные файлы небезопасны для доступа в веб-приложении или слишком много вызовов выполняется в файле ресурсы.

Еще одна особенность Chrome:

Для Chrome необходим параметр -allow-file-access-from-files для поддержки API через файл:///протокол.

Неясно, запускает ли в этот момент аргумент Cordova Simulate Chrome. Эта проблема была поднята раньше:

Кордова: запуск хрома с помощью -allow-file-access-from-files от VS 2017

Нельзя использовать файл cordova-plugin в Chrome: SecurityError при вызове window.resolveLocalFileSystemURL

Итак, возможно, решение состоит в том, чтобы заставить Кордову Имитировать "разрешить доступ к файлам из файлов"? Как я могу проверить эту гипотезу?

ИЗМЕНИТЬ Один из способов проверить гипотезу - запустить симулятор из командной строки, как это предложено в комментарии в этом ответе. Вы можете запустить команду, набрав chrome://version/ в адресной строке после запуска симулятора. Я добавил флаги --allow-file-access-from-files и --unlimited-quota-for-files, но получил ту же самую ошибку безопасности

4b9b3361