2011-11-18 88 views
1

我需要从联系人中获取电话号码,但光标未进入此循环。请帮我....从android中的联系人检索电话号码

for (phoneCursor.moveToFirst(); !phoneCursor.isAfterLast(); phoneCursor.moveToNext()) { 
// Get a phone number 
String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER)); 

Toast.makeText(this, "Phone = "+phoneNumber, Toast.LENGTH_LONG).show(); 
+0

phoneCursor.getCount()是什么? – user370305

回答

5

使用下面的代码,你一定会得到一个电话号码。

ContentResolver cr = getContentResolver(); 
     Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
      null, null, null); 
     if (cursor.moveToFirst()) { 
      String contactId = 
       cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
      // 
      // Get all phone numbers. 
      // 
      Cursor phones = cr.query(Phone.CONTENT_URI, null, 
       Phone.CONTACT_ID + " = " + contactId, null, null); 
      while (phones.moveToNext()) { 
       String number = phones.getString(phones.getColumnIndex(Phone.NUMBER)); 
       int type = phones.getInt(phones.getColumnIndex(Phone.TYPE)); 
       switch (type) { 
        case Phone.TYPE_HOME: 
         TextView textView=(TextView)findViewById(R.id.textView1); 
         textView.setText(number); 
         break; 
        case Phone.TYPE_MOBILE: 
         // do something with the Mobile number here... 
         break; 
        case Phone.TYPE_WORK: 
         // do something with the Work number here... 
         break; 
        } 
      } 
      phones.close(); 
+1

感谢他的工作..感谢很多。 –

0

你可以试试这个:

ContentResolver cr = getContentResolver(); 
    Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
     "DISPLAY_NAME = '" + NAME + "'", null, null); 
    if (cursor.moveToFirst()) { 
     String contactId = 
      cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
     // 
     // Get all phone numbers. 
     // 
     Cursor phones = cr.query(Phone.CONTENT_URI, null, 
      Phone.CONTACT_ID + " = " + contactId, null, null); 
     while (phones.moveToNext()) { 
      String number = phones.getString(phones.getColumnIndex(Phone.NUMBER)); 
      int type = phones.getInt(phones.getColumnIndex(Phone.TYPE)); 
      switch (type) { 
       case Phone.TYPE_HOME: 
        // do something with the Home number here... 
        break; 
       case Phone.TYPE_MOBILE: 
        // do something with the Mobile number here... 
        break; 
       case Phone.TYPE_WORK: 
        // do something with the Work number here... 
        break; 
       } 
     } 
     phones.close(); 
} 

而且是不要忘记添加AndroidManifest.xml文件里面READ_CONTACTS许可

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
+0

感谢帕雷希的回答,非常感谢。 –

0

我使用类似这样的函数: (从Activity类调用OnActivityResult函数:

@Override 
public void onActivityResult(int reqCode, int resultCode, Intent data) { 
     super.onActivityResult(reqCode, resultCode, data); 
     switch (reqCode) { 
     case (Constants.REQ_CODE_PICK_CONTACT) : 
      if (resultCode == Activity.RESULT_OK) { 
      savePickedContact(data, this);     
      } 
     break; 
     } 
} 


public static void savePickedContact(Intent data, Activity from){ 
     Uri contactData = data.getData(); 
     Cursor contactCur = from.managedQuery(contactData, null, null, null, null); 
     if (contactCur.moveToFirst()) { 
      for(int i=0;i<contactCur.getColumnCount();i++){ 
       String columnName = contactCur.getColumnName(i); 
       String value = contactCur.getString(i); 
      } 
      ContentResolver cr = from.getContentResolver(); 
      Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
             null, 
             ContactsContract.CommonDataKinds.Email.CONTACT_ID + " =?", 
             new String[]{contactCur.getString(contactCur.getColumnIndex("_id"))}, 
             ContactsContract.CommonDataKinds.Email.IS_PRIMARY + " DESC"); 
      Boolean hasData = emailCur.moveToFirst(); 
      while(hasData){ 
       String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
       hasData = emailCur.moveToNext(); 
       } 
      GlobalData.pickedContact.put("email_addresses", emails); 
      emailCur.close(); 

      Cursor phonesCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
              null, 
              ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " =?", 
              new String[]{contactCur.getString(contactCur.getColumnIndex("_id"))}, 
              ContactsContract.CommonDataKinds.Phone.IS_PRIMARY + " DESC"); 
      hasData = phonesCur.moveToFirst(); 
      while(hasData){ 
       String phoneNumber = phonesCur.getString(phonesCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA)); 
       hasData = phonesCur.moveToNext(); 
      } 
      phonesCur.close(); 

      Cursor eventCur = cr.query(Data.CONTENT_URI, 
        new String[]{ ContactsContract.CommonDataKinds.Event.DATA}, 
        ContactsContract.CommonDataKinds.Event.CONTACT_ID + " =? AND " + ContactsContract.CommonDataKinds.Event.TYPE + " =" + ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY +" AND "+ Data.MIMETYPE + " =?", 
        new String[]{contactCur.getString(contactCur.getColumnIndex("_id")), ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE}, 
        null); 
      hasData = eventCur.moveToFirst(); 
      if(hasData){       
       String birthday = "birthday", Utils.dbDateToDisplayDate(eventCur.getString(0)); 
      } 

      Cursor structNameCur = cr.query(Data.CONTENT_URI, 
        new String[]{ ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME}, 
        ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID + " =? AND " + Data.MIMETYPE + " =?", 
        new String[]{contactCur.getString(contactCur.getColumnIndex("_id")), ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE}, 
        null); 
      hasData = structNameCur.moveToFirst(); 
      if(hasData){       
       String givenName = structNameCur.getString(0); 
       String familyName = "family_name", structNameCur.getString(1); 
      } 
      structNameCur.close(); 
     } 
     contactCur.close(); 
} 
相关问题