2011-11-18 82 views
0
ContentResolver cr = getContentResolver(); 
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
if (cur.getCount() > 0) { 
    while (cur.moveToNext()) { 
     String id = cur.getString(
     cur.getColumnIndex(ContactsContract.Contacts._ID)); 
     String name = cur.getString(
     cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

     if (name.equals(selected) && Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 

      Cursor pCur = cr.query(
      ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " =?", new String[] { 
       id 
      }, null); 
      finalsend = ContactsContract.CommonDataKinds.Phone.NUMBER; 
      while (pCur.moveToNext()) { 

      } 
      pCur.close(); 

     } 

的代码应该看起来通过触点找到一个匹配这似乎正常工作“选中”可变的,但是然后它应该切换到ContactsContract.CommonDataKinds.Phone.CONTENT_URI和发现通过匹配向上相同的接触该ID并给我保存该联系人的电话号码。检索Android通讯录

每次它返回“Data1”,我做错了什么?这可能是一个愚蠢的错误,但任何帮助表示赞赏。

回答

0

下面的代码为我工作:

String id , name; 
ContentResolver cr = getContentResolver(); 

    String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 

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



     if (cur.getCount() > 0) { 


      while (cur.moveToNext()) { 



       id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 

       name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
       Log.i(tag, "Id is "+ id+"\t Name is"+name); 

      if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0){      


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

          null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null); 



         while (pCur.moveToNext()) { 


       // Do something with phones 



         int phNumber = pCur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER); 

         String phn = pCur.getString(phNumber); 

         Log.i("phn number", phn); 



        } 

        pCur.close(); 

       } 

       } 

    } 
+0

非常感谢。我缺少的部分是'int phNumber = pCur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER);' – adoo42