Android: создайте файл из android.net.URI - PullRequest
6 голосов
/ 28 февраля 2010

У меня есть объект android.net.URI (типа, возвращаемого onActivityResult после MediaStore.ACTION_VIDEO_CAPTURE): он выглядит как содержимое: //media/video/media/33.

Я хочу преобразовать это в объект File, и только в объект File - мне нужно передать его другому конструктору, для которого требуется File.

Как я могу преобразовать подобный URI в объект File? Если я попытаюсь

File newFile = new File(myURI);

Я получаю сообщение об ошибке в Eclipse, в котором предлагается преобразовать URI в строку. Добавление URI.getPath () в конструктор также не помогает.

Это относится к вопросу ' Как я могу преобразовать объект android.net.uri в объект java.net.uri? ', на который, к сожалению, нет хорошего ответа, но я хочу объект File вне, не Java-Ури.

Я не против, если мне придется записать это в поток сообщений и обратно - каким бы ни был лучший способ.

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

1 Ответ

6 голосов
/ 01 марта 2010

Как я могу преобразовать URI как это в Файловый объект?

Вы не можете надежным, совместимым с SDK способом.

"Если запись таблицы является URI содержимого: вам никогда не следует пытаться открыть и прочитать файл напрямую (во-первых, проблемы с разрешениями могут привести к сбою). Вместо этого вам следует вызвать ContentResolver.openInputStream (), чтобы получить объект InputStream, который вы можете использовать для чтения данных. "

(из http://developer.android.com/guide/topics/providers/content-providers.html)

Вам нужно будет изменить другой код для принятия и использования InputStream. Или, если предполагается, что другой код изменяет данные, ему нужно будет использовать OutputStream, тему, также описанную на странице, на которую ссылается выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...