百度、谷歌、官方文档看了一溜遍,看是一头雾水一脸懵逼

ContentProvider 的作用不是安全的对外提供数据么?create、insert、delete、query、update五个方法似乎不用 getType 方法都可以正常运行,那么这个方法存在的意义是什么呢?

官方文档说这个方法返回指定 URI 的 MIME 类型,并且还需要特定的类型,并且这个方法好像只有 resovler 调用 getType 方法的时候才会被调用,那么 调用这个方法有什么用呢?

搜了一圈资料,有个帖子说的角度挺奇特:http://blog.csdn.net/imyfriend/article/details/6589917

里面说:

结论:覆盖ContentProvider的getType方法对于用new Intent(String action, Uri uri)方法启动activity是很重要的,如果它返回的MIME type和activity在<intent filter>中定义的data的MIME type不一致,将造成activity无法启动。

但是这个由和数据提供有什么关系呢?ContentProvider 不是用来对外提供数据接口方便别的 App 可以安全的操作我们 App 数据的吗?

还有一个帖子

这个帖子里也说:

Every content provider must return the content type for its supported URIs. The signature of the method takes a URI and returns a String. The next code sample shows the getType() method of the sample application.

返回这个又有什么意义呢?只是为了单纯的判断是不是支持该 URI 吗?

有点儿懵逼,求大神帮忙解惑!

2 收藏


直接登录