RuntimeException at CallLog.Calls

这一生的挚爱 提交于 2019-12-12 19:20:09

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!