Barmaley
Barmaley

Reputation: 16363

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.

Upvotes: 6

Views: 4663

Answers (3)

davidwong37
davidwong37

Reputation: 19

If only interested in SMS conversations, and want addition SMS columns you don't get with content://mms-sms/conversations?simple=true, then you can try doing your own grouping on the SMS in the ContentResolver query.

  • uri = content://sms
  • projection = "DISTINCT " + Inbox.THREAD_ID, Inbox.ADDRESS, Inbox.BODY, Inbox.DATE etc...
  • selection = Inbox.THREAD_ID + " IS NOT NULL) GROUP BY (" + Inbox.THREAD_ID
  • sortOrder = Inbox.DEFAULT_SORT_ORDER

Note that I had to insert a dummy condition 'IS NOT NULL' before GROUP BY, because of the way that ContentResolver adds brackets to the database query it generates.

Upvotes: 1

Adam Fręśko
Adam Fręśko

Reputation: 1064

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

Upvotes: 1

Barmaley
Barmaley

Reputation: 16363

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.

Upvotes: 10

Related Questions