2011-04-11 84 views
3

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

当试图在手机上打开图片时,我看到它会提示可以“处理”图片的应用程序。这里会发生同样的事情吗?

回答

6

多个ContentProviders不能这样做。在清单中使用元素注册内容提供者的第一个应用程序可以控制URI模式。我很确定,如果您尝试添加使用相同URI模式的其他提供程序,您将收到安装错误。 Android跟踪提供者和URI。

当你看到多个应用程序用于处理文件或情况的提示,这是因为应用程序已经与包括 android.intent.category.CATEGORY_ALTERNATIVE或android.intent-category.CATEGORY_SELECTED_ALTERNATVE孩子指定的。实质上,这个应用程序或应用程序声明自己是儿童中指定动作的替代方案。这允许用户有多种选择来处理一种类型的数据。

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

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

+2

是的,我通过实际尝试使用“content:// contacts”URI注册ContentProvider进行验证。尝试安装APK时出现安装错误。 – srinivas1729 2011-04-12 22:06:29

相关问题