아래의 쿼리는 내 장치 (API 15)에서 제대로 실행됩니다. 이상하게도 android.database.sqlite.SQLiteException: no such column: has_phone_number: , while compiling: SELECT _id, contact_id, display_name, data1, data2, lookup, data1, mimetype, mimetype, data7, data4, data8, data9 FROM view_data_restricted data WHERE (1) AND (has_phone_number >?) ORDER BY display_name COLLATE NOCASE ASC
Android API 8, 10 ContactsContract.Data.HAS_PHONE_NUMBER 해당 열이 없습니다.
, 다음 코드를 여기에
Cursor contactsCur = getContentResolver().query(
ContactsContract.Data.CONTENT_URI,
new String[] { ContactsContract.Data._ID,
ContactsContract.Data.CONTACT_ID,
ContactsContract.Data.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Organization.COMPANY,
ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.Data.LOOKUP_KEY,
ContactsContract.CommonDataKinds.Phone.NUMBER,
Contacts.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredPostal.CITY,
ContactsContract.CommonDataKinds.StructuredPostal.STREET,
ContactsContract.CommonDataKinds.StructuredPostal.REGION,
ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE},
ContactsContract.Data.HAS_PHONE_NUMBER + " >? ",
new String[] { "0" },
ContactsContract.Data.DISPLAY_NAME + " COLLATE NOCASE ASC");
그것이 발생하는 예외 : 그것은 여기
10. 쿼리입니다 API 8 또는 API를 실행 내 에뮬레이터에서 작동하지 않습니다 또한 작동하지 않습니다
Cursor contactsCur = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[] { ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER},
ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER + " >? ",
new String[] { "0" },
null);
그것은 산출 : java.lang.IllegalArgumentException: Invalid column has_phone_number
http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html이 쿼리가 작동 ContactsContract.CommonDataKinds.Phone
이
이 기묘에 추가하려면 인터페이스 android.provider.ContactsContract.ContactsColumns에서 HAS_PHONE_NUMBER
에 액세스 할 수 있는지 상태 :
Cursor contactsCur = getContentResolver().query(
ContactsContract.Data.CONTENT_URI,
new String[] { ContactsContract.Data.LOOKUP_KEY},
null,
null,
null);
하지만이 일하지 않습니다 :
Cursor contactsCur = getContentResolver().query(
ContactsContract.Data.CONTENT_URI,
new String[] { ContactsContract.Data.HAS_PHONE_NUMBER},
null,
null,
null);
ContactsContract.Data.LOOKUP_KEY
은 ContactsContract.Data.HAS_PHONE_NUMBER
과 동일한 암시 적 조인에서 온 것입니다!
어디로 잘못 가고 있습니까?
. ContactsContract.Data.CONTENT_URI' 대신 'Contacts.CONTENT_URI'를 사용하십시오. 그러면 추가 열에 대한 implict 조인이 생성됩니다. – Codo
'ContactsContract.Contacts.CONTENT_URI '로 변경하면'java.lang.IllegalArgumentException : 잘못된 열 contact_id'가 나타납니다. – gnub
http://developer.android.com/reference/android/provider/ContactsContract.Data.html은' HAS_PHONE_NUMBER'는'ContactsContract.Contacts'와 함께 암시 적 조인을 통해 사용할 수 있어야합니다. – gnub