使用Loader无效列数据1的Android联系人电话号码

Adn*_*lla 3 android contacts

我以前使用内容解析器获取联系人列表及其详细信息,但仍然有效我想尝试在后台查询内容提供程序的Loader方法.我在这里查看了文档和示例代码:

http://developer.android.com/training/contacts-provider/retrieve-details.html

虽然我能够毫无问题地显示联系人列表,但我仍然坚持在点击它并在详细信息屏幕上显示特定联系人时检索电话号码.上面的演示在详细屏幕上显示了用户的地址,我甚至尝试修改它.我已将内容URI从Contacts更改为ContactsContract.CommonDataKinds.Phone,但我一直在改进

java.lang.IllegalArgumentException: Invalid column data1
Run Code Online (Sandbox Code Playgroud)

互联网上没有一个详细的教程显示它是如何完成的.这里有人能够善待一些光明吗?阅读各种其他Stackoverflow问题我很确定它与2个不同的CONTENT URI有关,但我又错了.任何帮助或指示将非常感激.谢谢

我已经看过很少的SO问题:

从android中的联系装载机获取电话号码:投影崩溃

Logcat说"无效列数据1"

如何在Android中获取联系人的电话号码

从查找URI中获取电话号码

他们都没有解决我的问题.以下是失败的相关代码:

     final static String[] PROJECTION = {
            Contacts._ID,
            Utils.hasHoneycomb() ? ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY : ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
           //ContactsContract.CommonDataKinds.Phone.NUMBER,
    };
Run Code Online (Sandbox Code Playgroud)

代码工作得很好,但是当我删除注释以获取电话号码时它就失败了

Jor*_*ego 7

就我而言,问题出在URI上.

我在用这个:

Uri uri = ContactsContract.Contacts.CONTENT_URI;
Run Code Online (Sandbox Code Playgroud)

我为此更改了(Phone.CONTENT_URI)以解决问题并获取电话号码:

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
Run Code Online (Sandbox Code Playgroud)

这是代码的其余部分:

contactos = (TextView) findViewById(R.id.contactos);

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;

String [] projection = new String[] {
                ContactsContract.Contacts._ID,
                ContactsContract.Contacts.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER
        };

Cursor cursor = getContentResolver().query(uri, projection, null, null, null);

while (cursor.moveToNext()){
            String nombre = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
            String telefono = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            contactos.append("Name: ");
            contactos.append(nombre);
            contactos.append(" - Phone Number: ");
            contactos.append(telefono);
            contactos.append("\n");
        }
Run Code Online (Sandbox Code Playgroud)