Android ContactsContract.Data隐式联接列不工作?

Android ContactsContract.Data隐式联接列不工作?,android,Android,很抱歉,如果这可能是一个重复的问题,我花了一个晚上试图把我的头围绕这个问题,我似乎找不到其他的帖子,可能会对这个问题投下一些光,所以我希望更多的几双眼睛可能会发现一些东西 API文档给我的印象是,当您指定某些字段时,库会执行一些魔术,并在后台为您执行隐式连接 似乎对我不起作用 import android.provider.ContactsContract.CommonDataKinds.Phone; private Cursor getContacts() { // Run quer

很抱歉,如果这可能是一个重复的问题,我花了一个晚上试图把我的头围绕这个问题,我似乎找不到其他的帖子,可能会对这个问题投下一些光,所以我希望更多的几双眼睛可能会发现一些东西

API文档给我的印象是,当您指定某些字段时,库会执行一些魔术,并在后台为您执行隐式连接

似乎对我不起作用

import android.provider.ContactsContract.CommonDataKinds.Phone;

private Cursor getContacts()
{
    // Run query
    Uri uri = Phone.CONTENT_URI;
    String[] projection = new String[] {
            Phone.DISPLAY_NAME,
            Phone.NUMBER,
            Phone.CONTENT_ITEM_TYPE,
            Phone.HAS_PHONE_NUMBER,
            Phone.IN_VISIBLE_GROUP
    };
    String selection = Phone.HAS_PHONE_NUMBER + " = '1' AND " + Phone.IN_VISIBLE_GROUP + " = '1'";
    String[] selectionArgs = null;
    String sortOrder = Phone.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
    return getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
}
当运行此命令时,它将随着以下命令终止:

java.lang.IllegalArgumentException: Invalid column vnd.android.cursor.item/phone_v2
从it文档中明确指出:

You can use all columns defined for ContactsContract.Data as well as the following aliases.

我缺少什么?

Phone.CONTENT\u ITEM\u TYPE是您的问题。这不是列名,而是Data.MIME_TYPE设置为的常量。从投影中删除它,它应该会很好。

Phone.CONTENT\u ITEM\u类型是您的问题。这不是列名,而是Data.MIME_TYPE设置为的常量。把它从你的投影上移开,它应该是好的