如何通过android中的ThreadID获取所有消息

时间:2013-02-22 08:28:58

标签: android sms mms

我尝试通过线程ID使用uri获取所有消息:content:// mms -sms / conversations / {threadId},但它似乎不起作用并抛出异常:

  

java.lang.NullPointerException

     

在android.os.Parcel.readException(Parcel.java:1333)

     

在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:182)

     

在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136)

     

在android.content.ContentProviderProxy.query(ContentProviderNative.java:358)

     

在android.content.ContentResolver.query(ContentResolver.java:311)

    ........

但是,当我将其更改为content:// sms / conversations / {threadId}时,它不会抛出这些,但仅适用于短信,而不适用于mms。

为什么呢?

2 个答案:

答案 0 :(得分:4)

sms和mms表有不同的列, 正确的方法是自己获取每个,这个 是

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

答案 1 :(得分:1)

上面的代码显示了类似的语法错误,所以我改变了这样。

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

它适用于我