问题
I get sometimes on some devices an RuntimeException, if I try to query the CallLog.Calls
.
I query the CallLog.Calls
with contentProvider
to get the last call.
Can anybody help why am I getting this error sometimes? I think, this is a system bug/problem?
Caused by: android.database.sqlite.SQLiteException: no such column: sdn_alpha_id: ,
while compiling: SELECT sns_receiver_count, numberlabel, service_type, matched_number,
type, contactid, lookup_uri, mime_type, sdn_alpha_id, sp_type, messageid, fname,
imnum, lname, sns_pkey, account_id, formatted_number, call_out_duration, number,
geocoded_location, account_name, is_read, raw_contact_id, source_data, cdnip_number,
state, _subject, date, real_phone_number, source_package, _id, sns_tid, name,
normalized_number, name_reversed, _data, photo_id, logtype, reject_flag, has_content,
m_content, country_code, frequent, cityid, bname, countryiso, numbertype, new,
duration, cnap_name, address, e164_number, voicemail_uri FROM logs WHERE
(logs.logtype=100 OR logs.logtype=110 OR logs.logtype=500 OR logs.logtype=800 OR
logs.logtype=900 OR logs.logtype=1000 OR (logs.logtype=200 AND number NOT IN (SELECT
number FROM logs WHERE number LIKE '%@%')) OR logs.logtype=300) AND ((((type != '4'))))
ORDER BY date DESC
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:180)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:358)
at android.content.ContentResolver.query(ContentResolver.java:317)
My code to query the CallLog is:
// get last entry in callLog
Cursor c = context.getContentResolver().query(Calls.CONTENT_URI, null, null,
null, Calls.DATE + " DESC");
回答1:
I had the same issue with my GS2 after an update. I get around it by adding the fields I need in the projection instead of null.
eg.
String[] projection = new String[] {CallLog.Calls._ID, CallLog.Calls.CACHED_NAME, CallLog.Calls.DATE, CallLog.Calls.DURATION, CallLog.Calls.NUMBER, CallLog.Calls.TYPE };
Cursor c = context.getContentResolver().query(Calls.CONTENT_URI, projection , null,
null, Calls.DATE + " DESC");
来源:https://stackoverflow.com/questions/11810547/runtimeexception-at-calllog-calls