0

다음 2 개의 코드 스 니펫은 새로운 Google 드라이브 Android API/Google Play 서비스 4.2 (libver 15)에서 문제가 있음을 보여줍니다. 아니면 내가 모르는 기능입니까? 코드를 단순하게 유지하기 위해 모든 오류 검사 및 초기화가 제거됩니다.MIME 유형이 'image/jpeg'에서 'image/png'로 변경되었습니다.

1/"image/jpeg"MIME 형식의 그림을 만듭니다.

GoogleApiClient mGAC; 
byte[] jpgBuffer; 
DriveFolder fldr; 

ContentsResult rslt = Drive.DriveApi.newContents(mGAC).await(); 
Contents cont = rslt.getContents(); 
cont.getOutputStream().write(jpgBuffer); 
MetadataChangeSet meta = new MetadataChangeSet.Builder() 
    .setTitle("foo.jpg").setMimeType("image/jpeg") 
    .build(); 
fldr.createFile(mGAC, meta, cont); 

드라이브에서 모든 것이 멋지고 멋쟁이입니다. 이미지가 멋져 보이고, 엄마에게도 보낼 수 있습니다. 그러나 이것은 내가 겪은 것이 아닙니다. 내 안드로이드 애플 리케이션의 다른 부분에서 그것을 검색하고 싶습니다.

Query query = new Query.Builder().addFilter(
    Filters.eq(SearchableField.MIME_TYPE, "image/jpeg") 
).build(); 
MetadataBufferResult rslt = Drive.DriveApi.query(mGAC, query).await(); 
for (Metadata md : rslt.getMetadataBuffer()) { 
    Log.d("TAG", md.getTitle() + " " + md.getMimeType()); 
} 

결과 :

2/그래서 난이 시도하지 크고, 지방 아무것도.

나는 포기하지 않으므로 다음 단계는 모든 파일을 찾는 것입니다. 그리고 1 단계에서 저장 한 "foo.jpg"파일은 "image/png"MIME 유형으로 표시됩니다.

+0

mimetype을 "image/*"로 사용해 보셨습니까? 이렇게하면 모든 이미지 형식이 처리됩니다. – Sushil

+1

질문은 'Google 드라이브 Android API'에만 해당되며 AFAIK에는 와일드 카드가 지원되지 않습니다. – seanpj

+0

이 부분을 살펴 보겠습니다. 그러나 업로드 할 이진 데이터가 실제로 png 형식 일 가능성이 있습니까? –

답변

1

수수께끼가 풀립니다. 특징입니다!

cont.getOutputStream().write(jpgBuffer); 

의 "jpgBuffer는"실제로 PNG 이진 데이터가 포함되어 있습니다. 그래서 내 앱이 "image/jpeg"MIME 유형을 지정해도 내 (내 사용자) 데이터를 스누핑 한 후 Google에서 MIME 유형을 "image/png"로 수정하기로 결정했습니다. 또한 약간의 지연이 발생하여 디버깅 프로세스가 훨씬 더 신비 스럽습니다.