How to get all messages by ThreadID in android

android, mms, sms

Solution

the sms and mms tables have different columns, the correct way is to fetch each on its own, that is

Cursor smsCur = cr.query(Uri.parse("content://sms/"), null,  "thread_id=" + threadId, null, null);
Cursor mmsCur = cr.query(Uri.parse("content://mms/"), null,  "thread_id=" + threadId, null, null);

Problem

I tried to get all messages by thread id with uri:content://mms-sms/conversations/{threadId}, but it doesn't seem work and throws exceptions: java.lang.NullPointerException at android.os.Parcel.readException(Parcel.java:1333) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:182) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136) at android.content.ContentProviderProxy.query(ContentProviderNative.java:358) at android.content.ContentResolver.query(ContentResolver.java:311) ``` ........ ``` however, when I change it to content://sms/conversations/{threadId}, it will not throw these, but only works for sms, not for mms. why?

Original source