2013-09-03 6 views
1

Я пытаюсь создать заказ Контакты приложение, который отображает только те контакты, которые имеют Контакты Номер. Прежде всего, есть ли какой-либо автоматизированный способ сделать это? Предположим, что нет, тогда я пытаюсь найти контакт по его имени, например. Rohan.Поиск Контакты По имени

Вот код: -

Cursor photoCursor = getContentResolver().query(
      android.provider.ContactsContract.Contacts.CONTENT_URI, 
      new String[] { ContactsContract.Contacts.PHOTO_ID, 
        ContactsContract.Contacts.DISPLAY_NAME }, 
      ContactsContract.Contacts.DISPLAY_NAME + " = ?", 
      new String[]{"Rohan"}, null); 
    photoCursor.moveToFirst(); 
    while (photoCursor.moveToNext()) { 
     Log.d("Photo Thumbnail", "" + photoCursor.getString(1)); 
    } 

Хотя контакт существует, я не получаю никакой регистрации, если удалить Выбор & Выбор Args Я вижу Rohan в журнале. Что я делаю не так?

ответ

2

Я сделал это с помощью следующего кода

Cursor cursor = getContentResolver().query(
      android.provider.ContactsContract.Contacts.CONTENT_URI, 
      new String[] { ContactsContract.Contacts.PHOTO_ID, 
        ContactsContract.Contacts.DISPLAY_NAME, 
        ContactsContract.Contacts._ID }, 
      ContactsContract.Contacts.HAS_PHONE_NUMBER, null, 
      ContactsContract.Contacts.DISPLAY_NAME); 

Это cursor дает все контакты, которые имеют какой-либо номер телефона, а затем я сохранить уникальный ID в ArrayList например,

cursor.moveToFirst(); 

    while (cursor.moveToNext()) { 
     contactsID.add(cursor.getString(2)); 
    } 

то при выборе контакта я нахожу номера контактов, используя это

Cursor cursor = getContentResolver() 
        .query(android.provider.ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
          new String[] { 
            ContactsContract.CommonDataKinds.Phone.NUMBER, 
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID, 
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME }, 
          ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
            + " = ?", 
          new String[] { contactsID.get(position) }, null); 
      contactNumbers = new ArrayList<String>(); 
      while (cursor.moveToNext()) { 
       contactNumbers.add(cursor.getString(0)); 
       Log.d("number", cursor.getString(0)); 
      } 
2

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

Cursor contactLookupCursor = 
      getContentResolver().query(
        Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, 
          Uri.encode("Rohan")), 
        new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup.NUMBER}, 
        null, 
        null, 
        null); 

    try { 
     while (contactLookupCursor.moveToNext()) { 
      contactName = contactLookupCursor.getString(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup.DISPLAY_NAME)); 
      contactNumber = contactLookupCursor.getString(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup.NUMBER)); 
     } 
    } finally { 
     contactLookupCursor.close(); 
    } 
+0

Я положил Log.d в цикл while, имя_события и имя_сообщения, но не получил никакого вывода. –

+0

ничего не производит при поиске имени – HelloWorld

Смежные вопросы