2012-05-11 2 views
3

Я пытаюсь выбрать номер телефона из глобальной адресной книги (корпоративная учетная запись). Я хотел бы использовать собственный сборщик/API, потому что я не хочу запрашивать у пользователя учетные данные для входа. Я наткнулся на API ContactsContract.Directory. Однако я не мог найти никаких примеров того, как их использовать. Я пробовал:Android ContactsContract.Directory API

private static final String[] PEOPLE_PROJECTION = new String[] { 
    ContactsContract.Directory._ID, 
    ContactsContract.Directory.DISPLAY_NAME, 
}; 

StringBuilder buffer = null; 
String[] args = null; 
if (constraint != null) { 
    buffer = new StringBuilder(); 
    buffer.append("UPPER("); 
    buffer.append(Phone.DISPLAY_NAME); 
    buffer.append(") GLOB ?"); 
    args = new String[] { constraint.toString().toUpperCase() + "*" }; 
} 

Cursor c = getContentResolver().query(ContactsContract.Directory.CONTENT_URI, PEOPLE_PROJECTION, buffer == null ? null : buffer.toString(), args, null); 

Но c всегда возвращает null. Обратите внимание, что я пытаюсь восстановить здесь только DISPLAY_NAME, так как я не уверен, как восстановить номер телефона. Спасибо за вашу помощь.

ответ

0

Пожалуйста, ознакомьтесь с исходным кодом, прилагаемым к another question, я спросил об этом. Приложение использует ContactsContract.Directory и работает с множеством разных устройств, кроме HTC.
Хотя вопрос очень старый, возможно, это поможет кому-то еще

0
Cursor phones = getActivity().getContentResolver().query(
      ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, 
      null, null); 
    while (phones.moveToNext()) { 
     Contact_Class contacts = new Contact_Class(); 
     contacts.setPersonName(phones.getString(phones 
       .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))); 
     contacts.setPhoneNumber(phones.getString(phones 
       .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 

     contact_list.add(contacts); 

    } 

    phones.close(); 
public class Contact_Class { 
String personName; 
String phoneNumber; 
public String getPersonName() { 
    return personName; 
} 
public void setPersonName(String personName) { 
    this.personName = personName; 
} 
public String getPhoneNumber() { 
    return phoneNumber; 
} 
public void setPhoneNumber(String phoneNumber) { 
    this.phoneNumber = phoneNumber; 
} 

}