多个ContentProvider可以提供相同的URI吗?

时间:2011-04-11 21:14:38

标签: android android-contentprovider

在Android上查询ContentProvider时,通过为该ContentProvider提供“内容URI”来指定感兴趣的ContentProvider。当多个ContentProvider有意地提供相同的URI时会发生什么?还是恶意地?

当我尝试在手机上打开照片时,我已经看到了可以“处理”图像的应用程序。这会发生同样的事吗?

1 个答案:

答案 0 :(得分:6)

多个ContentProviders无法执行此操作。使用其清单中的元素注册内容提供者的第一个应用程序可以控制URI模式。如果您尝试添加使用相同URI模式的其他提供程序,我很确定您会收到安装错误。 Android会跟踪提供商和URI。

当您看到有多个应用处理文件或情况的提示时,这是因为应用已指定包含子级的应用 android.intent.category.CATEGORY_ALTERNATIVE或android.intent-category.CATEGORY_SELECTED_ALTERNATVE。实质上,应用程序或应用程序声明自己可以替代孩子中指定的操作。这允许用户有多种选择来处理一种数据。

提供替代方案是有意义的:用户可能想要编辑图片,通过Twitter分享图片或通过电子邮件发送图片。

请注意,两个内容提供程序可以执行相同的操作,但它们不能使用相同的URI。应用程序必须有意识地选择使用哪一个,或者提供一种在两者之间进行选择的机制。