2014-11-20 1 views
0

android 데이터베이스에서 원시 연락처를 얻으려면 올바른 쿼리를 작성하십시오. 이 쿼리에서선택 args로 올바른 빌드 커서 쿼리 android sqlite

private static final StringBuilder stringBuilderTypeLocalContactSelection = new StringBuilder(ContactsContract.RawContacts.ACCOUNT_TYPE + " <> 'com.anddroid.contacts.sim'" + 
      QUERY_AND_VALUE + ContactsContract.RawContacts.ACCOUNT_TYPE + " <> 'com.google' " + " AND " + ContactsContract.RawContacts.ACCOUNT_TYPE 
      + " <> 'com.android.contacts.sim' " + QUERY_AND_VALUE + ContactsContract.RawContacts.ACCOUNT_TYPE + " <> 'vnd.sec.contact.sim' " 
      + QUERY_AND_VALUE + ContactsContract.RawContacts.ACCOUNT_TYPE + " <> 'com.viber.voip.account'" + QUERY_AND_VALUE + ContactsContract.RawContacts.DELETED + " = 0 "); 

스트링 빌더에 설명되지 않은 유형, 원시 연락처를 얻기 위해 노력하지만 ACCOUNT_TYPE 값이 null의 경우, 커서는 다음과 같습니다

String select = new StringBuilder(ContactsContract.RawContacts.CONTACT_ID + " = ? " + QUERY_AND_VALUE + stringBuilderTypeLocalContactSelection.toString()).toString(); 
cursor = context.getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI, columnSelection,select,new String[]{ String.valueOf(contactId) }, null); 

stringBuilderTypeLocalContactSelection은

: 쿼리 되세요 데이터베이스에서 레코드를 가져 오지 않습니다. ACCOUNT_TYPE = null이고 커서로도 레코드를 줄 때 유효한 선택을 할 수 있습니까?

답변

1

나는 동일한 문제가있었습니다. "viber"및 "whatsapp"가 아닌 연락처를 가져 오려고했지만 커서가 null ACCOUNT_TYPE의 레코드를 가져 오지 않았습니다. 내 선택은 "OR"+ ContactsContract.RawContacts.ACCOUNT_TYPE + "IS NULL"을 선택 항목에 추가하는 것으로 문제가 해결되었습니다.