Android 为什么要使用ContentProvider.getType()获取MIME类型?

Android 为什么要使用ContentProvider.getType()获取MIME类型?,android,mime-types,Android,Mime Types,看看内容提供者,我对getType()方法的典型用法还不是很清楚。API文档说明了如何实现此方法 这允许[应用程序]检索MIME 在分派时键入URI 意图 有人能描述一下使用它特别有用的典型情况吗?例如,您正在为图片库编写内容提供者。您应该在getType()方法中提到您提供了图片-jpg或png。因此,当一个用户启动image gallery时,它将能够显示内置图片和内容提供商提供的图片 在伪代码中,contentProvider的用户执行以下操作: List contentProviders

看看内容提供者,我对getType()方法的典型用法还不是很清楚。API文档说明了如何实现此方法

这允许[应用程序]检索MIME 在分派时键入URI 意图


有人能描述一下使用它特别有用的典型情况吗?

例如,您正在为图片库编写内容提供者。您应该在getType()方法中提到您提供了图片-jpg或png。因此,当一个用户启动image gallery时,它将能够显示内置图片和内容提供商提供的图片

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

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

这是伪代码,但我希望您能理解。

据我所知,用例可以是:


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

但是getType()中的mime类型是什么实际用于实现这一点?因此,在这种情况下,您将获得系统中所有提供商的列表,并根据它们返回的数据类型进行筛选,例如,显示一个包含设备上所有可用JPG的图像浏览器?很抱歉,我需要一把茶匙,只是想确保我完全理解。:)是的,没错。我不确定这是否是您在任何时候都要编写的代码,但最好展示一下这个概念。@VladimirIvanov如果自定义ContentProvider没有导出的话?它是否会在画廊中显示图像?我不理解这个例子。要使用
getType
,您需要自己向它传递一个uri,而这不是您所拥有的。