【问题标题】:Get mime type of content scheme获取 mime 类型的内容方案
【发布时间】:2013-07-07 09:14:06
【问题描述】:

为了从我的 android 应用程序将图像发送到服务器,我必须获取图像的 mime 类型(或者,至少,它的扩展名)。

我从ACTION_GET_CONTENT 意图中获取图像。一些应用程序,如 Dropbox,发送 file:// 方案数据,因此我可以使用 MimeTypeMap.getFileExtensionFromUrl() 猜测扩展名,但其他一些应用程序,如 Google Drive,发送 content:// 方案,不允许这样做。

在这里发帖之前我已经尝试了很多东西,比如:

AssetFileDescriptor asset = getContentResolver().openAssetFileDescriptor(getIntent().getData(), "r");
FileInputStream stream = asset.createInputStream();
String mime = URLConnection.guessContentTypeFromStream(stream); // returns null

我认为唯一的解决方法是将资产解码为位图,然后生成新的压缩图像(使用Bitmap.compress()),但这会给手机增加一些工作量,并且可能会改变原始图像的格式/质量图片,所以只有在没有其他解决方案的情况下才保留它。

有人知道我的问题吗?非常感谢您的帮助;)

【问题讨论】:

    标签: android mime-types file-type


    【解决方案1】:

    正如@sh3psheep on Twitter 所建议的那样,我已经尝试过了,它适用于content:// 方案:

    Uri data = getIntent().getData();
    String mime = getContentResolver().getType(data); // returns correct MIME type, such as "image/png"
    

    我发现的唯一问题是它不支持file:// 方案,但我们可以使用我在问题中描述的方法来处理它。

    【讨论】:

      猜你喜欢
      • 2018-07-19
      • 2011-05-27
      • 2015-11-26
      • 2012-07-18
      • 2014-04-16
      • 2016-06-07
      • 1970-01-01
      • 2011-08-13
      • 2018-12-01
      相关资源
      最近更新 更多