Android - как я могу преобразовать android.net. Объект URI к java.net. Объект URI?

Я пытаюсь получить a FileInputStream объект на изображении, которое пользователь выбирает от картинной галереи. Это - андроид URI возвращенный android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI

content://media/external/images/media/3

Когда я пытаюсь создать объект URI Java из этого объекта, я добираюсь IllegalArgumentException с описанием исключения Ожидаемая схема файла в URI: content://media/external/images/media/3, тогда как android URI показывает схему содержанием

Обновление: Никогда не находил решение для исходного вопроса. Но если Вы захотите поток байтов изображения в галерее изображений, то эта часть кода сделает это.

Bitmap bitmap = Media.getBitmap(getContentResolver(), imageUri);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
ByteArrayInputStream fileInputStream = new ByteArrayInputStream(bytes.toByteArray());
59
задан Swati Garg 14 July 2019 в 15:24
поделиться

3 ответа

Вы могли использовать toString метод андроида Uri в комбинации String базирующийся конструктор Java URI.

android.net.Uri auri = new android.net.Uri(what ever);
java.net.URI juri = new java.net.URI(auri.toString());

Android URI | Java URI

52
ответ дан Jeankowkow 24 November 2019 в 18:25
поделиться

Так как Строковое построение не работает, Вы попытались просто создать его Ваш сам?

android.net.URI auri = new android.net.URI(what ever);
java.net.URI juri = new java.net.URI(auri.getSchema(),
                                     auri.getSchemaSpecificPart(),
                                     auri.getFragment());

Вы могли бы также хотеть проверить то свое получение дважды допустимых данных из Android класс URI. Документы, как перечислено в моем другом ответе обсуждают, как он не делает в значительной степени никакой проверки ошибок. Если существует, заражают ошибку, класс просто выкладывает мусор так или иначе и не выдает исключений. Который мог очень вероятно быть, почему класс Java, который действительно делает проверку, выдает исключение.

0
ответ дан Brian Gianforcaro 24 November 2019 в 18:25
поделиться

Found the correct way to open InputStream from content URI:

InputStream fileInputStream=yourContext.getContentResolver().openInputStream(uri);

That's all!

41
ответ дан 24 November 2019 в 18:25
поделиться
Другие вопросы по тегам:

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