2013-02-22 27 views
5

Próbowałem pobrać wszystkie wiadomości według identyfikatora wątku z uri: content: // mms-sms/conversations/{threadId}, ale to nie wydaje się działać i generuje wyjątki:Jak uzyskać wszystkie wiadomości według ThreadID w Androidzie

java.lang.NullPointerException

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

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

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

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

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

........ 

jednak, kiedy go zmienić na zawartość: // sms/rozmowy/{ThreadID}, to nie rzuci nich, ale działa tylko na SMS, nie dla wiadomości MMS.

dlaczego?

+0

wszelkie chłopaki pracowali na takich rzeczach? – Binary

Odpowiedz

4

SMS i MMS tabele mają różne kolumny, poprawny sposób jest sprowadzić każdy na własną rękę, że jest

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

Tak, może masz rację. wydaje się, że nie mamy innego wyjścia. – Binary

+0

Od dokumentów: @param selection Filtr deklarujący, które wiersze zostaną zwrócone, sformatowany jako klauzula WHERE (Z WYŁĄCZENIEM samego WHERE). – Yaroslav

+0

@Yaroslav edytował. Dzięki. – vikki

1

Powyższy kod pokazuje błąd składni tak więc zmieniłem tak.

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

To działa dobrze dla mnie