Androd 中 ContentProvider 的 getType 方法的究竟有什么用?

百度谷歌了一圈,还是挺懵逼

首先,在onCreate、insert、delete、query、update 五个方法中,不使用 getType 都可以正常执行。

在官方文档中,只是说了该方法可以返回给定 URI 的 MIME 类型,单条记录以“vnd.android.cursor.item”开头,多条记录以“vnd.android.cursor.dir”开头。

但是这个又有什么意义了呢?

URI 本身就可以很直观的显示出是多条还是单条啊:

content://aa.aa.aa/bb ← 这就是请求 bb 中整个数据啊(多条啊)

content://aa.aa.aa/bb/1 ← 这就是请求 bb 中 id 为 1 的数据啊(单条啊)

content://aa.aa.aa/bb/1/cc ← 这就是请求 bb 中 id 为 1 的 cc 字段啊(单条啊)

那么 getType 这个方法的存在意义又是什么呢?为什么非要在前面加一个“vnd.xxx”前缀?

查了一圈,好像该方法只有 resolver 调用 getType 方法时候才会执行,并且返回 MIME 类型,返回这个类型有什么作用呢?

能否请大神结合例子直观的解释一下,感谢

menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0, new ComponentName(this, MyContacts.class), null, intent, 0, null);执行这条语句时也会去调用getType方法,我到现在都不知道这条语句哪个地方调用了getType方法

还有, startActivity(new Intent(Intent.ACTION_INSERT, getIntent().getData()));这条语句我也不知道哪个地方调用了这个getType方法,

我觉得这个方法是为了提高查询的效率

建议你看看第一行代码第213页左右