developer tip

Android- android.net.Uri 객체를 java.net.URI 객체로 어떻게 변환 할 수 있습니까?

copycodes 2020. 12. 12. 11:27
반응형

Android- android.net.Uri 객체를 java.net.URI 객체로 어떻게 변환 할 수 있습니까?


FileInputStream사용자가 사진 갤러리에서 선택한 이미지에 개체 를 가져 오려고합니다. 이것은 URI반환 된 안드로이드입니다android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI

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

이 객체에서 Java URI 객체를 생성하려고 할 때 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());

Java 기반 생성자와 함께 toStringandroid 메서드를 사용할 수 있습니다 .UriStringURI

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

Android URI | 자바 URI


콘텐츠 URI에서 InputStream을 여는 올바른 방법을 찾았습니다.

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

그게 다야!


원래 질문에 대한 해결책이 있습니다 (Uri를 URI로 변환).

  1. 실제 파일 경로 가져 오기 (다음 코드보기 : 미디어 저장소에서 URI에서 파일 이름 및 경로 가져 오기 )

  2. 실제 경로와 생성자를 사용하여 URI를 가져옵니다. URI (String uri)

자세한 내용이 필요하면 여기를 참조하십시오.

ACTION_VIDEO_CAPTURE에서 인 텐트를 사용하여 녹화 된 동영상을 삭제하는 방법은 무엇입니까?


나는 jgilrincon의 대답에 투표했습니다. 낮은 평판으로 인해 댓글을 달 수 없습니다. 여기에 몇 가지 추가 정보가 있습니다. Apache Cordova 프로젝트에서 FileHelper.java사용할 수 있습니다. 미디어 저장소 (및 앱 자산 폴더)를 고려하여 Uri 문자열에서 파일을 처리하는 데 필요한 기능이 있습니다. )

특히이 메서드는 Uri에서 InputStream을 제공합니다.

public static InputStream getInputStreamFromUriString(String uriString, Activity cordova)

문자열 구성이 작동하지 않기 때문에 직접 구성 해 보셨습니까?

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 클래스가 예외를 던지는 이유가 될 수 있습니다.

참고 URL : https://stackoverflow.com/questions/559902/android-how-can-i-convert-android-net-uri-object-to-java-net-uri-object

반응형