2012-05-11 3 views
3

글로벌 주소록 (기업 계정)에서 전화 번호를 선택하려고합니다. 사용자에게 로그인 자격 증명을 묻지 않으므로 기본 선택기/API를 사용하고 싶습니다. ContactContract.Directory API를 발견했습니다. 그러나, 나는 그것을 사용하는 방법에 대한 샘플을 찾을 수 없습니다. 시도 :안드로이드 연락처 contract.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); 

하지만 항상 null을 반환합니다. 아직 전화 번호를 검색하는 방법을 모르겠으므로 여기서 DISPLAY_NAME 만 검색하려고합니다. 당신의 도움을 주셔서 감사합니다.

답변

0

another question에 첨부 된 소스 코드를 확인하십시오. 응용 프로그램은 Contract.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; 
} 

}

다른 사람을 도움이 될 것입니다