Search code examples
androidexceptioncursorcontacts

Contacts Cursor is always Null?


I am getting data from phone databese.But always cursor getting null.I have also permission read contact. Can anybody help me?

//for get number and name from contacts
 c = getContentResolver().query(uri, new String[]{ 
                                    ContactsContract.CommonDataKinds.Phone.NUMBER,  
                                    ContactsContract.CommonDataKinds.Phone.TYPE },
                                null, null, null);

My all code is here:

  @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
           if (data != null) {
                Uri uri = data.getData();

                if (uri != null) {
                    Cursor c = null;
                    try {
                        c = getContentResolver().query(uri, new String[]{ 
                                    ContactsContract.CommonDataKinds.Phone.NUMBER,  
                                    ContactsContract.CommonDataKinds.Phone.TYPE },
                                null, null, null);

                        if (c != null && c.moveToFirst()) {
                            String number = c.getString(0);
                            int type = c.getInt(1);
                            Toast.makeText(this, type + ": " + number, Toast.LENGTH_LONG).show(); 
                        }
                    } finally {
                        if (c != null) {
                            c.close();
                        }
                    }
                }

And Exception from logcat:

12-16 12:59:33.962: E/AndroidRuntime(20650): Caused by:   java.lang.IllegalArgumentException: Invalid column data1
12-16 12:59:33.962: E/AndroidRuntime(20650): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167)

Solution

  • I get phoneNumber with following code, use that:

      Cursor contact = getContentResolver().query(
                        ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
      if (contact.getCount() > 0) {
      contact.moveToFirst();
    
        do
        {
                    String contactId = contact.getString(contact
                        .getColumnIndex(ContactsContract.Contacts._ID));
    
            log.d("contactId is", contactId);
    
                         Cursor pCur = getContentResolver()
                                .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                        null,
                                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                                + " = ?",
                                        new String[] { contactId }, null);
                    if (pCur.getCount() > 0){
                        pCur.moveToFirst();
                        do {
                            String number = pCur
                                    .getString(pCur
                                            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                                log.d("number is",number);
    
                        } while (pCur.moveToNext());
        }
                }
        while(contact.moveToNext());
       }