2012-10-25 4 views
4

저는 간단한 연락처 응용 프로그램을 개발했으며 이름을 사용하여 검색을 구현했습니다. 하지만 이제는 이름과 회사 모두를 사용하여 검색하고 싶습니다 (기본 Android 앱 연락처와 동일). 회사를 사용하여 별도로 검색 할 수는 있지만 반환 된 연락처 ID가 다르기 때문에 다른 연락처 정보를 얻을 수 없습니다 ... 아래 코드를 붙여 넣었습니다. 기업 검색을 사용하여 연락처를 얻을 수 연락처를 회사뿐만 아니라 이름을 사용하여 검색하십시오 (예 : android 2.3.3 contacts app)

private Cursor getContactsByName(String temp) { 
     Uri uri = ContactsContract.Contacts.CONTENT_URI; 
     String[] projection = new String[] { ContactsContract.Contacts._ID, 
      ContactsContract.Contacts.DISPLAY_NAME, }; 
     String selection = ContactsContract.Contacts.DISPLAY_NAME + " like '" 
      + temp + "%'"; 
     String[] selectionArgs = null; 
     String sortOrder = ContactsContract.Contacts.DISPLAY_NAME 
      + " COLLATE LOCALIZED ASC"; 
     return managedQuery(uri, projection, selection, selectionArgs, 
      sortOrder); 
    } 

(검색 문자열이 글고 사용 textchangedlistener에서 얻을 수있다) 코드 :

코드 이름 검색을 사용하여 연락처를 얻을 수 (검색 문자열은 textchangedlistener를 사용하여 edittext에서 가져옴)

private Cursor getContactsByCompany(String temp) {  
     Uri uri = ContactsContract.Data.CONTENT_URI; 
     String[] proj = new String[] { ContactsContract.Contacts._ID, 
      ContactsContract.Contacts.DISPLAY_NAME, Organization.COMPANY};  

     String selection3 = Data.MIMETYPE + "='" + Organization.CONTENT_ITEM_TYPE + 
      "' AND " + Organization.COMPANY + " like '" + temp + "%'"; 
     String[] selectionArgs = null; 
     String sortOrder = ContactsContract.Contacts.DISPLAY_NAME 
      + " COLLATE LOCALIZED ASC"; 
     return managedQuery(uri, proj, 
      selection3, selectionArgs, sortOrder);  
    } 

첫 번째 경우 (즉, 이름 검색), 연락처 ID, 이름 같은 정보가있는 커서가 나타납니다. 연락처 ID를 사용하여 사진과 같은 연락처 정보,보기 연락처 페이지에 전자 메일을 표시합니다.

두 번째 경우 (예 : 회사 검색)에는 정보 연락처 ID, 이름 및 회사가있는 커서가 표시됩니다. 그러나 여기에서 동일한 연락처에 대해 반환 된 연락처 ID는 첫 번째 경우에서 반환 된 연락처 ID와 다릅니다. 그래서 사진, 이메일 등이 연락처 ID를 사용하여 연락처의 다른 정보를 얻을 수 없습니다.

연락처의 연락처 ID가 사례 1과 사례 2에서 동일하면 중복을 제거하여 두 검색을 하나로 통합 할 수 있습니다. 그러나 이것은 여기에 해당하지 않습니다.

내 질문은 연락처 ID가 다르면 어떻게 두 번째 검색을 결합 할 수 두 번째 경우 연락처 정보를 찾을 수 있습니까?

답변