我尝试通过线程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。
为什么呢?
答案 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);
它适用于我