2011-01-05 3 views
3

하자 무력 정원 - 다양한 안드로이드 2.x에서 보이는 접촉 ID/이름 커서 (를 통해 ContactsContract) : 이메일 및/또는 전화 번호로 Android 2.x 주소록을 쿼리하는 방법은 무엇입니까?

Cursor c = getContentResolver().query(
    Contacts.CONTENT_URI, 
    new String[] { Contacts._ID, Contacts.DISPLAY_NAME }, 
    Contacts.IN_VISIBLE_GROUP + " = '1'", 
    null, 
    Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC" 
); 

은 하나 이상의 전자 메일, 연락처를 얻을이를 필터링하는 방법이 있나요 전화 번호?

은 내가 Contacts.HAS_PHONE_NUMBER사용할 수있는 참조 ...하지만 나는 HAS_EMAIL 어디서나 볼 수 없습니다. (이것이 추악 해지지는 않을 것이라고 말해주십시오.)

답변

4

Uri에 관한 쿼리. 예를 들어, android.provider.ContactsContract.CommonDataKinds.Email는 이메일 주소를 획득 할 수 있으며 다른 열 (예를 들어, IN_VISIBLE_GROUP)는 암시 적으로 연결된다. 이러한 다른 콘텐츠 제공자 열린 우리당 값을 사용하는 방법을 보여줍니다

Here is a sample project합니다.

Cursor c = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
String[] names = c.getColumnNames(); 
for (String string : names) { 
    Log.d("ContactList", "RC column " + string); 
} 
c.close(); 

결과는 has_email이 포함

+0

마크가 나타납니다! 많은 감사합니다. 나는 방금 스핀을 가져다 줄 것이다. 그러나 나는 분명히해야한다. 나는 항상 개인적으로 접촉을 할 수 있다는 것을 알지만, 필터링 된 목록을 얻으려고 노력하고있다. –

+0

@Joe D' Andrea : "필터링 된 목록을 하나 얻으려고합니다."... 내가 제공 한 샘플이 보여주는 것입니다. 'CommonDataKinds.Email'와 같은 "보조" "테이블"을 질의 할 때'ContactsContract' 컨텐트 프로 바이더가 제공하는 암시적인 조인을 이용해야합니다. – CommonsWare

+0

완벽. 그게 내가 빠뜨린 것입니다. 암시 적 조인입니다. (이제 프로젝트를 가져 오기 위해 이클립스를 사용 해보자!) –

0

난 그냥 그렇게 연락처에 가져온 커서에 열을 열거. 그래도 갤럭시 탭에만 적용될 수 있습니다.