Android의 내부 데이터베이스 테이블 ContactsContract
에서 항목을 삭제하려고합니다. 즉, 생일과 같은 일정을 연락처의 항목에서 삭제해야합니다.Android에서 ContactsContract를 사용할 때 "SQLiteException : 해당 열 없음 : mimetype"
다음 코드는 제대로 작동하지만 일부 사용자 (약 1 %)가 SQLException
과 충돌합니다. 내 코드에 문제가 있습니까? 아니면 Android의 ContactsContract
을 올바르게 지원하지 않는 것입니까? 슬로우됩니다
try {
ArrayList<Long> rawContactIDs = getRawContactID(o.getID());
int rawContactCount = rawContactIDs.size();
for (int r = 0; r < rawContactCount; r++) {
long rawContactID = rawContactIDs.get(r);
String where = ContactsContract.Data.MIMETYPE+" = ? AND "+ContactsContract.Data.RAW_CONTACT_ID+" = ? AND "+ContactsContract.CommonDataKinds.Event.TYPE+" = ?";
String[] selection = new String[] { ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE, String.valueOf(MY_RAW_CONTACT_ID), String.valueOf(ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY) };
getContentResolver().delete(ContactsContract.Data.CONTENT_URI, where, selection);
}
}
catch (Exception e) {}
예외는 다음과 같습니다
android.database.sqlite.SQLiteException: no such column: mimetype: , while
compiling: DELETE FROM data WHERE mimetype = ? AND raw_contact_id = ? AND
data2 = ?
at
android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:158)
at
android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
at
android.content.ContentProviderProxy.delete(ContentProviderNative.java:472)
at android.content.ContentResolver.delete(ContentResolver.java:700)
at ... MY_ACTIVITY ...
이 예외가 발생하는 장치에 대한 패턴은 무엇입니까? – CommonsWare
특정한 경우에있어서 더 밝고/HW-T18입니다. – caw
주류 장치에서이 장치가 보이지 않는 경우 (개인적으로이 장치에 대해 들어 보지 못했습니다), 장치를 망가 뜨린 채로 장치를 분필 할 것입니다. – CommonsWare