0

我使用以下代码从联系人中检索所有电话号码。

Cursor c = context.getContentResolver().query(
                        Data.CONTENT_URI,
                        new String[] { Phone.NUMBER },
                        Data.MIMETYPE + "='" +     Phone.CONTENT_ITEM_TYPE
                                + "'", null, null);

它在我的 Android 手机中完美运行。

但是有些用户说我的应用程序没有从联系人那里获取所有电话号码,而只是其中的一部分。我无法弄清楚原因..为什么?

4

1 回答 1

3

这将获取包含基本联系人数据的光标,并将循环访问联系人拥有的电话号码,可以有多个。

Uri uri = data.getData();

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


while (cursor.moveToNext()) { 
   String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
   String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 

   if (Boolean.parseBoolean(hasPhone)) { 
                    // You know have the number so now query it like this
    Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
          null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, 
          null, null); 

        while (phones.moveToNext()) { 
           String phoneNumber = phones.getString( 
                  phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                 
        } 
        phones.close(); 
    } 
 }
于 2012-07-31T05:26:33.157 回答