Search code examples
androidsmsmms

How to get all messages by ThreadID in android


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?


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);