【问题标题】:Use setType() on intent to allow only jpeg and png images; not gif images在意图上使用 setType() 以仅允许 jpeg 和 png 图像;不是 gif 图片
【发布时间】:2017-05-29 03:29:31
【问题描述】:

我正在开发一个 Android 应用,用户必须在其中从图库中选择一张图片。此图像应具有 .jpeg/.png 扩展名。

我试过了:

Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
i.setType("image/jpeg, image/png");

但是,它仍然允许我选择 .gif 图像。我做错了什么?

【问题讨论】:

  • 很可能,因为那不是一个有效的 MIME 类型,它无法解析并被忽略。 setType() is not documented to support multiple MIME types。在 Android 4.4+ 上,您可以使用 use EXTRA_MIME_TYPES,但只能使用 ACTION_GET_CONTENTACTION_OPEN_DOCUMENT。另请注意,ACTION_PICK 不一定会调出任何形式的“图库”应用程序。
  • @CommonsWare 好的,但是有没有其他方法可以防止 gif 文件被选中?
  • 在 Android 4.4+ 上,尝试使用 EXTRA_MIME_TYPES 将您限制为所需的两种 MIME 类型。在较旧的设备上,只要求一种 MIME 类型,如果需要,为用户提供 PNG 或 JPEG 的单独菜单(或其他)选项。或者,不用担心 MIME 类型,如果用户选择 GIF,则自己将其转换为 PNG。
  • 好的 :) 非常感谢!

标签: android image android-intent jpeg mime-types


【解决方案1】:

如果要指定要允许的图像格式,您的代码应如下所示:

String[] mimeTypes = {"image/jpeg", "image/png"};
final Intent pickIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
            .setType("image/*")
            .putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 2017-09-15
    • 2017-02-23
    • 2017-07-24
    • 2010-09-29
    • 2012-04-20
    • 2017-12-12
    • 2019-01-20
    相关资源
    最近更新 更多