MIME类型从“image / jpeg”切换到“image / png”

时间:2014-02-19 00:59:52

标签: android google-drive-api google-play-services google-drive-android-api

以下2个代码段显示了我遇到的新版Google云端硬盘Android API / Google Play服务4.2(libver 15)所遇到的问题。或者这是我不知道的功能?删除所有错误检查和初始化以保持代码简单。

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);

在云端硬盘中,一切都很美好。图像在那里,看起来很棒,我甚至可以发送给我的妈妈。但这不是我追求的。我想在我的Android应用程序的另一部分中检索它。

2 /所以我试试这个:

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());
}

结果:大,肥胖没什么。

我没有放弃,所以下一个合乎逻辑的步骤是寻找任何文件。我在步骤1中保存的文件“foo.jpg”显示为“image / png”MIME类型。

1 个答案:

答案 0 :(得分:1)

神秘解决了。 这是一个特色!

中的“jpgBuffer”
cont.getOutputStream().write(jpgBuffer);

实际上包含PNG二进制数据。因此,即使我的应用程序指定了“image / jpeg”MIME类型,Google在窥探我的(我的用户)数据后决定将MIME类型更正为“image / png”。还应该注意的是,它发生了一些延迟,使调试过程更加神秘。

相关问题