2012-06-07 2 views
0
String exactname = "Joe Blogs" 

내가 직접 접촉하지 _IDDISPLAY_NAME를 사용하여 연락처를 열 수있는 방법의 높고 낮은 검색했습니다.열기 접촉 의도 DISPLAY_NAME는

편집 : Joe 블로그는 분명히 고유 항목입니다.

Intent intent = new Intent(Intent.ACTION_VIEW); 
    Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(contactID)); 
    intent.setData(uri); 
    context.startActivity(intent); 

this answer에서

내가 위의 의도와 유사과의 접촉을 열기 전에 조 블로그의 ID를 조회해야합니까? 아니면 (희망을 갖고) 뭔가를 놓친 적이 있습니까? 사전에

감사합니다.

+0

이름이 같은 연락처가 두 개있는 경우 그 이유는 Android에 ID가 필요한 이유입니다. id는 고유하므로 –

+0

나는 조 블로그가 분명히 독특하다는 질문을 덧붙이려고했다. – brandall

답변

1

예, 당신은

if (!cur.moveToFirst()) { 
    // Then the cursor isn't empty. Get the contact's id. 
    contactId = cur.getInt(cur.getColumnIndex(CONTACT_ID)); 
} 

이 첫 번째와 관련된 연락처 ID를 반환합니다

Cursor cur = getContentResolver().query(CONTENT_URI, null, DISPLAY_NAME + "=?", new String[] { "Joe Blogs" }, null); 

은 다음과 Cursor에 의해 반환 된 행을 검색, 뭔가 등으로 데이터베이스를 쿼리해야 Cursor에 기록하십시오.

+0

답변 해 주셔서 감사합니다. 귀하의 예제에서 나는 새로운 String [] { "Joe Blogs"}를 'exactname'으로 바꿀 수 있습니까? 저는 제 자신을 테스트하려고합니다. 또한 getID (정확한 이름)와 같은 직접적인 검색 방법이 없는가? 감사. – brandall

+0

아니요. 그런 식의 메서드가없는 이유는 * 클래스 *가 아닌 * 데이터베이스 *에서 데이터를 수집하기 때문입니다. 이것은 이해해야하는 중요한 개념입니다. –

+0

다시 한번 감사드립니다. 답변을 올바른 것으로 표시하십시오. – brandall