2013-02-22 6 views
5

uri:content:// mms-sms/conversations/{threadId}のスレッドIDですべてのメッセージを取得しようとしましたが、うまく動作せず例外をスローします:スレッドIDですべてのメッセージをアンドロイドで取得する方法

android.database.DatabaseUtils.readExceptionFromParcelでandroid.os.Parcel.readExceptionで

java.lang.NullPointerExceptionが

(Parcel.java:1333)

(DatabaseUtils.java:182)

android.content.ContentProviderProxy.queryでandroid.database.DatabaseUtils.readExceptionFromParcelで

(DatabaseUtils.java:136)

(ContentProviderNative.java:358)

android.content.ContentResolver.query(ContentResolverので.javaファイル:311)

........ 

をしかし、私は内容に変更したとき:// SMS /会話/ {スレッドID}、それはこれらを投げるが、唯一のSMSのではなく、MMSのために働くことはありません。

なぜですか?

+0

どんな人がそのようなことに取り組んできた私のために正常に動作しますか? – Binary

答えて

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

ええ、多分あなたはそれについて正しいです。他の選択肢がないようです。 – Binary

+0

からdocs:@param selection返す行を宣言するフィルタ。 SQL WHERE句(WHERE自体を除いて)でフォーマットされます。 – Yaroslav

+0

@Yaroslavが編集しました。ありがとう。 – vikki

1

である上記のコードは、私はこのように変化したような構文エラーを示すことを、独自にそれぞれをフェッチすることです。

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

それは

関連する問題