2

Я использую Cordova Filechooser plugin для выбора файлов с моего устройства Android. Плагин возвращает содержимое: // URI (например, content: //com.android.providers.media.documents/document/image%3A15756). Я звоню resolveLocalFileSystemURI, чтобы иметь возможность разрешить URL-адрес контента и нарисовать изображение на холсте. Однако по какой-то причине URI не разрешается должным образом.Phonegap: Разрешение контента: // URI, полученный из собственного файла chooser

E.g. FULLPATH Возвращенных записей вцелом является /com.android.providers.media.documents/document/image%3A15756 для содержания URI содержания: //com.android.providers.media.documents/document/image%3A15756

Любые идеи? Мой код выглядит следующим образом:

window.resolveLocalFileSystemURI(_this.target_image, function (fileEntry) { 
      var img = new Image(); 
      alert(fileEntry.fullPath); 
      img.src = URL.createObjectURL(fileEntry.fullPath); 
      img.onload = function() { 
        combiner_context.drawImage(img, 0, 0); 
        combiner_context.putImage(0, img.height, _that.editor_img); 


      }; 
     }, function() { 
      alert('Could not load selected file. Please try again.'); 
     }); 
+1

Существует не обязательно файл, к которому вы можете получить доступ. Этот плагин не реализует «выбор файла», несмотря на его имя. Он реализует выбор контента, используя Android 'ACTION_GET_CONTENT'. Что возвращается (ваш 'content: //' value) является 'Uri', что собственное приложение Java будет использовать, чтобы получить« InputStream »для чтения в выбранном контенте. Существует не требование, чтобы 'Uri' был файлом, к которому вы можете получить доступ, и вероятность того, что он будет файлом, доступ к которому вы можете получить, уменьшается с каждой последующей версией ОС Android. – CommonsWare

+0

Я вижу. Доступ к файлу из галереи, доступной моим приложением ... Любой альтернативный плагин, который вы бы порекомендовали? – JB2

+0

Извините, у меня нет рекомендации для вас. – CommonsWare

ответ

2

я был в состоянии преобразовать из «содержания: //» URI в файл «: //» URI с помощью этого плагина: https://www.npmjs.com/package/cordova-plugin-filepath.

После получения URI «file: //», я тогда могу использовать функцию acceptColocalLileFileSystemURL() Кордовы.

Надеюсь, это поможет.

if (fileUri.startsWith("content://")) { 
    //We have a native file path (usually returned when a user gets a file from their Android gallery) 
    //Let's convert to a fileUri that we can consume properly 
    window.FilePath.resolveNativePath(fileUri, function(localFileUri) { 
     window.resolveLocalFileSystemURL("file://" + localFileUri, function(fileEntry) {/*Do Something*/}); 
    }); 
} 
+1

Я пробовал, но не работал для меня. – Ironic

+0

Я пробовал и работает, но я получаю SECURITY_ERR, если я пытаюсь скопировать или прочитать файл. Я хочу получить содержимое файла из Outlook на Android. – hydrococcus

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

  • Нет связанных вопросов^_^