2011-01-18 1 views
2

Я пытаюсь для поиска номера телефона для контактов по их ContactId, BLL результатов возвращаются - номер телефона: 1ContactsContract поиск Номер телефона Контактной Id

Я попытался с помощью других примеров вокруг SO, но я получаю а 0 Количество на курсоре

Uri uri = ContentUris.withAppendedId(Data.CONTENT_URI, contactId); 

Log.i(TAG, "Locate Contact by Id: " + contactId + " at Uri: " + uri.toString()); 

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

try { 
    if (cursor.moveToFirst()) { 
     Log.i(TAG, "Phone Number: " + cursor.getString(cursor.getColumnIndex(Phone.NUMBER))); 
    } 
} finally { 
    cursor.close(); 
} 

ответ

2

Я закончил тем, что делал это по Phone.LOOKUP_KEY, а не Phone.CONTACT_ID;

private HashMap<String, CharSequence> lookupPhoneNumbers(String lookupKey) 
{ 
    HashMap<String, CharSequence> numbers = new HashMap<String, CharSequence>(); 

    Cursor cursor = getContext().getContentResolver().query(Phone.CONTENT_URI, null, Phone.LOOKUP_KEY + " = ?", new String[] { lookupKey }, null); 
    try 
    { 
     while (cursor.moveToNext()) 
     { 
      String phoneNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER)); 
      int type = cursor.getInt(cursor.getColumnIndex(Phone.TYPE)); 
      CharSequence phoneLabel = Phone.getTypeLabel(getResources(), type, "Undefined"); 
      // boolean isPrimary = (cursor.getInt(cursor.getColumnIndex(Phone.IS_PRIMARY)) == 1); 

      numbers.put(phoneNumber, phoneLabel); 
     } 
    } finally 
    { 
     cursor.close(); 
    } 

    return numbers; 
} 
+2

какой ключ поиска вы использовали? –

6

попробовать это:

private ArrayList<String> getPhoneNumbers(String id) 
{ 
    ArrayList<String> phones = new ArrayList<String>(); 

    Cursor cursor = mContentResolver.query(
      CommonDataKinds.Phone.CONTENT_URI, 
      null, 
      CommonDataKinds.Phone.CONTACT_ID +" = ?", 
      new String[]{id}, null); 

    while (cursor.moveToNext()) 
    { 
     phones.add(cursor.getString(cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER))); 
    } 

    cursor.close(); 
    return(phones); 
}