Анализатор GPX для Android — нет поставщика контента

В своем приложении я хотел бы использовать файл gpx, загруженный с сервера.

Я использую GPXParser из https://github.com/ticofab/android-gpx-parser.

Когда я пытался разобрать файл gpx, я получил сообщение «java.io.FileNotFoundException: нет поставщика контента».

Gpx parsedGpx = null;
GPXParser parser = new GPXParser();
InputStream inputStream = getContentResolver().openInputStream(Uri.parse(stringUrl));
parsedGpx = parser.parse(inputStream);

Как я могу решить свою проблему?

В чем ценность stringUrl ? Дайте и пример. Учитывая, что вы пытаетесь проанализировать строку для Uri, предполагается, что Uri не имеет правильного типа для getContentResolver, так откуда вы взяли stringUrl?

Andrew 23.11.2022 16:09
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

getContentResolver предназначен для получения данных из ContentResolver, а не из любого случайного URL-адреса, он предназначен для получения данных из других процессов и обычно принимает строковую форму content://....

Сначала вам нужно загрузить gpx с помощью чего-то вроде HttpURLConnection, и это getInputStream() метод, чтобы получить inputStream для использования с парсером.

getContentResolver is to get data from a ContentResolver Нет. От контент-провайдера.
blackapps 23.11.2022 20:59

@blackapps вы перескакиваете на шаг / у вас другой взгляд на семантику. getContentResolver возвращает ContentResolver не поставщика контента, поскольку для получения данных может не потребоваться поставщик контента. Вы получаете данные от ContentResolver`а, он получает данные от поставщика контента. Это многоэтапный процесс, вы перепрыгиваете через шаг в многоступенчатой ​​цепочке, которая продолжается дальнейшими шагами, когда поставщик контента получает данные из другого места (память, хранилище, сеть и т. д.).

Andrew 23.11.2022 22:56

Преобразователь содержимого не видит никаких данных. Он открывает для вас входной поток, а затем данные передаются вам от поставщика контента. Преобразователь контента ничего об этом не знает. Это даже не шпион.

blackapps 23.11.2022 23:23

@blackapps «данные» могут быть объектом входного потока или объектом outputstream или даже loadThumbnail, который возвращает Bitmap, а для типов file:// и android.resource:// Uri он даже не связан с поставщиком контента, вы ошибаетесь getContentResolver с тем, какие данные вы получаете для некоторых Uri можно получить из его getContentResolver().openInputStream() метода через InputStream объект.

Andrew 24.11.2022 00:12

Другие вопросы по теме

Похожие вопросы