Binary Wang
Binary Wang

Reputation: 73

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?

Upvotes: 6

Views: 5499

Answers (2)

vikki
vikki

Reputation: 2814

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

Upvotes: 6

Karthick M
Karthick M

Reputation: 779

The above code shows syntax error like that so i changed like this.

   Cursor c= getContentResolver().query(Uri.parse("content://sms/"), null,  "thread_id=" + messgid, null, null);

It works fine for me

Upvotes: 1

Related Questions