КонтактСмотреть поиск Номер телефона по идентификатору контакта - PullRequest
2 голосов
/ 19 января 2011

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

Я пробовал использовать другие примеры в 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 ]

6 голосов
/ 19 января 2011

попробуйте это:

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);
}
2 голосов
/ 07 февраля 2011

Я закончил делать это 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;
}
...