Android- Android.net.uri 객체를 java.net.uri 객체로 어떻게 변환 할 수 있습니까?
-
05-09-2019 - |
문제
나는 얻으려고 노력하고있다 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());
다른 팁
Content URI에서 입력 스트림을 열 수있는 올바른 방법을 찾았습니다.
InputStream fileInputStream=yourContext.getContentResolver().openInputStream(uri);
그게 다야!
원래 질문에 대한 해결책이 있습니다 (URI 변환 URI) :
실제 파일 경로 가져 오기 (이 코드보기 : Medicstore에서 Uri에서 파일 이름과 경로를 얻으십시오)
실제 경로와 생성자를 사용하여 URI를 받으십시오 : URI (String URI)
자세한 내용이 필요한 경우 여기를 참조하십시오.
나는 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 클래스가 예외를 던지는 이유 일 수 있습니다.