Android get uri from resource

URI (Uniform Resource Identifier)

URI — это специальный идентификатор, по которому можно определить абстрактный или физический ресурс. Самый понятный пример с URI — это обычная веб-страница. Возьмём к примеру страницу http://developer.alexanderklimov.ru/android/catshop/catshop.php. Данный адрес можно разбить на несколько частей:

  • Scheme — http
  • Scheme-specific part — //developer.alexanderklimov.ru/android/catshop/catshop.php
  • Path — /android/catshop/

У протокола http есть и другие параметры, которые рассматривать не будем. Существует также протокол ftp, имеющий свои параметры. Ниже вы увидите другие примеры. Главное здесь — возможность определить нахождение ресурса по представленным данным.

Допустим, мы хотим загрузить видеоматериал в компонент VideoView. Само видео может находиться в ресурсах программы или на SD-карте. С помощью URI мы можем подсказать программе, откуда следует загрузить файл.

Например, если видеофайл playcat.3gp находится в папке /res/raw, то получить адрес для загрузки можно следующим образом:

Если файл хранится на внешней карточке, то код будет следующим (опустим правильное определение имени карточки):

У компонента VideoView есть метод setVideoURI(URI uri), в котором нужно указать объект класса URI:

Посмотрим на другие примеры:

Координаты

Метод uri.getScheme() вернёт geo, а метод uri.getSchemeSpecificPart()54.354183,37.34011.

Номер телефона

В данном случае метод uri.getScheme() вернёт tel, а uri.getSchemeSpecificPart() — 1234578.

Контакты

URI также используется при работе с контент-провайдерами, в частности, с контактами.

Источник

Получить URI изображения, хранящегося в drawable

Я добавляю в свое приложение пару примеров, чтобы оно не выглядело таким пустым, когда пользователь смотрит на него в первый раз. В списке с образцами элементов должно быть изображение, а изображение, которое я собираюсь использовать, уже хранится в папке / res / drawable-приложения.

Читайте также:  Как быстро зарядить свой андроид

Поскольку у меня уже есть метод, который загружает изображения элементов из URI, я хотел бы получить URI в /res/drawable/myImage.jpg, но, похоже, я не могу понять это правильно.

Последовательность действий следующая: Создайте элемент со строкой, представляющей URI изображения. Отправить список элементов в список Список загружает изображение в фоновой задаче путем преобразования строки в URL и последующего выполнения url.openStream ();

Я безуспешно пробовал несколько вариантов URI. «android.resource: // . » сообщает о неизвестном протоколе «file: //» файл не найден

Так что сейчас я немного не понимаю, как это исправить .

5 ответов

Вы должны использовать ContentResolver для открытия URI ресурсов:

Также вы можете открывать URI файлов и контента, используя этот метод.

В самом простом виде .

Где «книга» — это имя файла в папке с возможностью переноса изображений.

Вы можете использовать Uri.Builder вместо конкатенации строк

Вот что вам действительно нужно:

На основе выше — доработанная версия для любого ресурса:

СПОР

это правильный ответ, однако часть о последних полях неверна — это не имеет ничего общего с ответом — Борис Треухов

@BorisTreukhov — пожалуйста, объясните нам, что вы имеете в виду под «часть о конечных полях не верна» — вопрос — как получить uri в . построить способ его анализа (как анализируется uri? см. ответ)

Источник

Оцените статью