【问题标题】:Why use ContentProvider.getType() to get MIME type?为什么要使用 ContentProvider.getType() 来获取 MIME 类型?
【发布时间】:2011-07-18 02:58:40
【问题描述】:

看看内容提供者,我对 getType() 方法的典型用法不是很清楚。 API 文档说关于实现这个方法,

这允许 [应用程序] 检索 MIME 分派时的 URI 类型 意图。

谁能描述一个使用它特别有用的典型案例?

【问题讨论】:

    标签: android mime-types


    【解决方案1】:

    例如,您正在为图片库编写内容提供程序。您应该在 getType() 方法中提及您提供图片 - jpg 或 png。因此,当您启动图片库时,它将能够显示您的内容提供商提供的内置图片和图片。

    在伪代码中,contentProvider 的用户执行如下操作:

    List contentProviders = getProviders();
    List resultProviders;
    final Type type = Type.JPG;
    for (ContentProvider provider : contentProviders) {
      if (type == provider.getType()) {
         resultProviders.add(provider);
      }
    }
    

    这是伪代码,但我希望你能明白。

    【讨论】:

    • 但是 getType() 中的 MIME 类型实际上是如何用于实现这一点的呢?
    • 那么在这种情况下,您将获得系统中所有提供者的列表并过滤它们返回的数据类型,例如显示设备上所有可用 JPG 的图像浏览器?很抱歉需要这个用茶匙,只是想确保我完全理解。 :)
    • 是的,没错。我不确定这是否是您随时要编写的代码,但最好展示一下这个概念。
    • @VladimirIvanov 如果没有导出自定义 ContentProvider 呢?它会在图库中显示图片吗?
    • 我看不懂这个例子。要使用getType,您需要自己传递一个uri,这不是您拥有的东西。
    【解决方案2】:

    据我了解,用例可能如下:

    应用 A 包含内容提供者。应用程序 B 使用该内容提供程序从应用程序 A 检索所有数据项。然后用户选择其中一个(在应用程序 B 中),然后应启动应用程序 A 中的活动以显示/编辑/删除所选数据项。所以 App B 然后创建一个意图,并确保 App A 中的活动处理它,您需要将意图的 (mime-)type 设置为 uri 的 mime-type (显示/编辑/删除活动在 App A 中已将此 mime 类型添加到其意图过滤器中)。

    【讨论】:

      猜你喜欢
      • 2012-08-17
      • 2015-10-24
      • 1970-01-01
      • 2023-03-14
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多