时间:2011-05-05 15:45:18

标签: android cursor contacts

Android联系人让我发疯! 此代码返回空游标,但联系人存在!任何人都可以看到我不能做到的事情吗?

        ContentResolver cr = getContentResolver();
        String query = ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = " +pickedID;
        Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,query , null, null);
        pCur.moveToFirst();
            while (pCur.moveToNext()) {
                    contactPhone.setText(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA)));
                } 
                pCur.close();

               query = ContactsContract.CommonDataKinds.Email.CONTACT_ID +" = " +pickedID;
                pCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,query , null, null);
                pCur.moveToFirst();
                        while (pCur.moveToNext()) {
                            contactPhone.setText(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)));
                        } 
                        pCur.close();

3 个答案:

答案 0 :(得分:2)

我对null游标有同样的问题,我的问题是,我忘了添加 Manifest.xml文件中的以下代码行:

uses-permission android:name="android.permission.READ_CONTACTS"

答案 1 :(得分:1)

我不确定这是否是问题的全部原因,但是你正在调用

pCur.moveToFirst();

将光标移动到第一个条目。然后你马上打电话

while (pCur.moveToNext())

将光标移动到第二个条目。所以你正在跳过第一个条目。

忽略pCur.moveToFirst();,然后离开while循环,看看是否有帮助。

答案 2 :(得分:0)

我认为问题的根源是您最初检索联系人列表的方式。

 Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,query , null, null);

应该是..

Cursor pCur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);