Friday, June 7, 2013

SGS-3 bug related to SMS conversations list?

http://stackoverflow.com/questions/13553046/sgs-3-bug-related-to-sms-conversations-list

SGS-3 bug related to SMS conversations list?


This issue was reported several times, but still not resolved yet. I read all messages/thread which somehow related to this topic either in Samsung's developers site or in StackOverflow
Let me again describe whole problem just in few words:
  1. Developers used to get list of SMS conversations through simple query like:
    Uri.parse("content://mms-sms/conversations/"); Cursor cursor = context.getApplicationContext().getContentResolver().query(uri, null, null, null, null);
    or something like this. Key point here's URI address: content://mms-sms/conversations
  2. Everyone knows that it's unofficial and one's doing it on his own risk - see proof link here
  3. But, critical point here's a simple fact this code doesn't work properly only in Samsung Galaxy S3 and some models of Galaxy Tab 2. It produces NullPointerException with stacktrace:
    java.lang.NullPointerException at android.os.Parcel.readException(Parcel.java:1431) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140) at android.content.ContentProviderProxy.query(ContentProviderNative.java:366) at android.content.ContentResolver.query(ContentResolver.java:372) at android.content.ContentResolver.query(ContentResolver.java:315)
In all other devices of the rest of the World/Universe it works well! Strange, huh?
I know answers like: hey dude, it's your problem, since presence/correctness of aforementioned URI doesn't guaranteed, nevertheless, does someone has more productive idea?
I have already posted question to Samsung's developers through their forum.
share|edit

2 Answers


In the end I've figured how to overcome aforementioned issue (I am not sure that it's bug, but anyway it looks like a bug).
List of conversations can be retrieved through this query:
Uri.parse("content://mms-sms/conversations?simple=true"); 
Cursor cursor = context.getApplicationContext().getContentResolver().query(uri, null, null, null, null);
Keypoint here's URI content://mms-sms/conversations?simple=true.
share|edit
Hey @barmaley, what if you want to get the thread_id from the Uri "content://mms-sms/conversations?simple=true". How would you do that?toobsco42 Jan 9 at 6:55
Nevermind, i guess the '_id' column of "content://mms-sms/conversations?simple=true" is equivalent to the 'thread_id' column of "content://mms-sms/conversations" .toobsco42 Jan 9 at 7:27


I also encountered this problem and it seems that there is no solving for it atm. Checked @barmaley answer and it also produce same exception for me
@edit my friend just checked this on his sgs3 and it works! but he cannot get body/adress column, but its a start! It is very very weird that it works on his not on mine. Mine sgs3 is from Polish distribution and his is from usa... if there is difference between regions this can be worse than expected
share|edit
content://mms-sms/conversations?simple=true produces different set of columns. E.g. address as snippet and so on, so you'd need to change your codebarmaley Nov 30 '12 at 16:56
Yeah, was easy to fixt that thanks to //prints columns names for (int i = 0; i < cur.getColumnCount(); i++) { Log.v("column names", cur.getColumnName(i).toString()); }Adam Fręśko Dec 3 '12 at 0:41

No comments:

Post a Comment