0

나는 다음과 같이 전화에서 특정 유형의 모든 연락처를 얻으려고 :컨텐트 프로 (연락처) - 이러한 열 : metadata_dirty

Cursor cursor = context.getContentResolver().query(
      ContactsContract.RawContacts.CONTENT_URI, 
      null, 
      ContactsContract.RawContacts.ACCOUNT_TYPE + "='com.whatsapp'", 
      null, 
      ContactsContract.RawContacts.CONTACT_ID + " ASC"); 

을하지만,이 라인은 이미 예외 (사용자 정의 ROM, 누가 던졌습니다 => 어쩌면 이것과 관련이 있나?). 한 명의 사용자 만이 오류가 발생했으며 여기에 붙어 있습니다. 해결 방법을 아는 사람이 있습니까? 연락처를 모두 조회 할 수있는 다른 방법이 있습니까?

내 예외는 다음과 같습니다 :이 사용자의 사용자 정의 ROM의 내부 버그가 같은

Exception: android.database.sqlite.SQLiteException: no such column: metadata_dirty (code 1): , while compiling: 
SELECT sort_key, send_to_voicemail, pinned, display_name, metadata_dirty, 
phonebook_label_alt, version, phonebook_bucket, _id, custom_ringtone, 
times_contacted, account_type_and_data_set, sync4, dirty, sync2, 
contact_id, raw_contact_is_user_profile, aggregation_mode, data_set, 
phonebook_label, account_type, sync3, display_name_alt, phonetic_name, 
last_time_contacted, display_name_source, backup_id, sort_key_alt, 
phonebook_bucket_alt, deleted, starred, account_name, sync1, sourceid, 
phonetic_name_style 
FROM view_raw_contacts_restricted AS view_raw_contacts 
WHERE (1) 
AND ((account_type='com.whatsapp')) 
ORDER BY contact_id ASC 
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java) 
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java) 
    at android.content.ContentProviderProxy.query(ContentProviderNative.java) 
    at android.content.ContentResolver.query(ContentResolver.java) 
    at android.content.ContentResolver.query(ContentResolver.java) 
    ... 

답변

1

내가 쿼리 잘못 아무것도 표시되지 않습니다, 그것은 보인다. 시스템이 누가이지만, Contacts DB가 Android의 이전 버전을 기반으로 같은 https://developer.android.com/reference/android/provider/ContactsContract.RawContactsColumns.html#METADATA_DIRTY

그래서 보인다 :

METADATA_DIRTY 안드로이드 N의 새로운 열입니다.

+0

재미 있습니다. 즉, 사용자가 티타늄 백업과 같은 루트 앱으로 연락처 데이터베이스를 복원하는 경우이 열이없는 연락처에 대한 이전 데이터베이스 파일이 생성 될 수 있습니다 (그러나 안드로이드 시스템은 존재한다고 생각하고 쿼리를 생성합니다 그 기본 데이터베이스 파일과 작동하지 않습니다 ...) 나는 그 – prom85

+0

옙, 확실히, 나는 티타늄 백업 및 유사 사용하여 사용자에 의해 문제의 톤을 봤어요 확인, 그들은 쉽게 부러 수 있습니다. – marmor

+0

고마워, 그건 완전히 이해가되고 나는 이것이 어떻게되는지 확신한다. 필자가 필요로하는 쿼리의 필드를 명시 적으로 정의함으로써 피할 수있다. 그러나 이것은 근본 원인을 설명합니다. 감사 – prom85