【发布时间】:2012-04-30 11:59:46
【问题描述】:
我目前正在学习开发 Android 应用程序并且有一个相当基本的问题:
假设我想发送一个隐式 Intent 来打开由 URI 链接指定的数据,例如“内容://com.mynewauthority:8100/table1”。假设我创建了一个自定义内容提供程序,它在“content://com.mynewauthority:8100/table1”维护一个 SQLite 表。
现在,由于我没有为我的表指定 MIME 类型,而只指定了它的 URI,Android 必须能够以某种方式找出它。但由于它是定制表,我自己决定 MIME 类型,所以据我所知,它可能是“猴子/香蕉”。我似乎在 Content Provider 实现中找不到任何地方,它指定了哪个 MIME 类型与哪个 URI 一起使用,除了 getType(URI uri) 函数,它似乎没有被 Android 系统用于 Intent 解析。
所以我的问题是:在解析隐式 Intent 期间,Android 如何确定与定制内容提供者的 URI 关联的 MIME 类型?
希望这个问题足够清楚!
【问题讨论】:
-
“Android 系统似乎没有将其用于 Intent 解析”——您对此的证明是,究竟是什么?
-
对不起,我的错!我没有以正确的方式测试我的应用程序。现在我设法通过更改 getType() 函数使应用程序中断。那么基本上Android系统使用getType(URI uri)函数进行意图解析?这意味着 Android 系统可以查找与 URI 关联的内容提供程序,并使用 getType() 函数来检索 MIME 类型。
-
不需要,只要调用右边的
getType()ContentProvider,由权限(com.mynewauthority)决定。顺便说一句,您不要使用带有ContentProvider的端口号。 -
好的,太好了。非常感谢您的及时帮助!
标签: android android-intent mime-types android-contentprovider