문제

나는 얻으려고 노력하고있다 FileInputStream 사용자가 사진 갤러리에서 선택한 이미지의 개체. 이것은 안드로이드입니다 URI 반환 android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI

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

이 개체에서 Java Uri 객체를 구성하려고 할 때 IllegalArgumentException 예외 설명과 함께 URI의 예상 파일 체계 : 내용 : // 미디어/외부/이미지/미디어/3 반면 안드로이드 URI는이 계획을 다음과 같이 표시합니다 콘텐츠

업데이트: 원래 질문에 대한 해결책을 찾지 못했습니다. 그러나 그림 갤러리에서 이미지의 바이트 스트림을 원한다면이 코드가 그렇게 할 것입니다.

Bitmap bitmap = Media.getBitmap(getContentResolver(), imageUri);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
ByteArrayInputStream fileInputStream = new ByteArrayInputStream(bytes.toByteArray());
도움이 되었습니까?

해결책

당신은 사용할 수 있습니다 toString 안드로이드의 방법 Uri The의 조합으로 String Java의 기반 생성자 URI.

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

안드로이드 우리 | 자바 우리

다른 팁

Content URI에서 입력 스트림을 열 수있는 올바른 방법을 찾았습니다.

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

그게 다야!

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

  1. 실제 파일 경로 가져 오기 (이 코드보기 : Medicstore에서 Uri에서 파일 이름과 경로를 얻으십시오)

  2. 실제 경로와 생성자를 사용하여 URI를 받으십시오 : URI (String URI)

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

Action_Video_Capture와의 의도를 사용하여 녹음 된 비디오를 삭제하는 방법?

나는 Jgilrincon의 대답에 투표했다. 평판이 낮아서 언급 할 수 없으며 여기에 추가 정보가 있습니다. FileHelper.java Apache Cordova Project에서는 MediaStore (및 App Assets 폴더)를 고려할 때 URI 문자열에서 파일 처리에 필요한 기능이 있습니다.

특히이 방법은 URI의 입력 스트림을 제공합니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top