내 앱에서 사용자는 파일을 선택하고 적절한 앱에서 열 수 있습니다 (ACTION_VIEW 인 텐트 사용). 데이터를 다른 앱에 보내기 전에 데이터에 대한 작업을해야합니다. 따라서 스트리밍 솔루션을 사용하고 있습니다. openTypedAssetFile
및 writeDataToPipe
을 구현하는 ContentProvider를 구현했습니다 (이 메서드는 openPipeHelper
로 생성 된 출력 ParcelFileDescriptor를 채 웁니다.).Android 갤러리에서 스트리밍 된 파일을 지원하지 않습니다
작동 방식 : .pdf 파일, .txt 파일 등을 열 수 있습니다. 스트리밍이 올바른 것처럼 보입니다. 3 자 앱을 사용하여 이미지를 열 수 있습니다. 나는 Gallery
를 사용하여 이미지를 열 때 그러나, (갤러리 검은 화면을 보여줍니다) 작동하지 않습니다, 나는 다음과 같은 예외가 얻을 :
fail to open myfile.jpg
UriImage(21890): java.io.FileNotFoundException: Not a whole file
나는 갤러리 원 (here)에서보고했다 및 나는 예외가 여기에서 발생되는 것을 볼 수 있습니다 : 내가 선택한 경우
try {
if (MIME_TYPE_JPEG.equalsIgnoreCase(mContentType)) {
InputStream is = mApplication.getContentResolver()
.openInputStream(mUri);
mRotation = Exif.getOrientation(is);
Utils.closeSilently(is);
}
**mFileDescriptor = mApplication.getContentResolver()
.openFileDescriptor(mUri, "r");**
if (jc.isCancelled()) return STATE_INIT;
return STATE_DOWNLOADED;
} catch (FileNotFoundException e) {
Log.w(TAG, "fail to open: " + mUri, e);
return STATE_ERROR;
}
그러나, 한 번 갤러리 응용 프로그램에서 "바탕 화면으로 설정"을 선택한 후 내 이미지를 볼 수 있습니다, 그 다음 잘 스트리밍입니다. 갤러리가 열리면 문제가 발생합니다.
(ContentResolver 코드 등에서) 더 자세히 살펴본 후 나는 왜 이런 식으로 행동하는지 이해할 수 없었습니다. Gallery
은 스트리밍 파일을 지원하지 않는 것 같습니다. 그게 맞습니까? 의견이 있으십니까?
고마워요./:
그런 다음 자신의 갤러리를 만들 선택한 이미지에 액세스, HTTPS 나를 위해 일이다 /github.com/luminousman/MultipleImagePick – Rohit