私はSMSアプリケーションで作業していますが、GROUP BY句を使用してContentProviderからデータを取得する際に問題が発生しました。Androidから - データをSMSから取得するContentProvider - GROUP BY
私は同様の質問のスレッドをたくさん読んでいますが、まだ私のための解決策を提供していません。
私が欲しいのは、すべてのスレッドから最新のSMSを取得することです。これを実現するには、DATE列の最大値を選択し、それをTHREAD_IDでグループ化する必要があります。
============================ THREAD_ID | MESSAGE | DATE | ============================ 1 | Hello | 555 1 | Hi | 666 2 | Test | 333 2 | Test 2 | 999
そして結果は返す必要があります:
1 - Hi - 666 2 - Test 2 999
これは私がこれまで持っているものであるが、以下のコードは、最新のSMSを取得し
は、SMS表は次のようになりますと仮定します特定のカテゴリからではなく、テーブル全体から。 GROUP BY句が無視されているように見えます。
String CONTENT_URI = "content://sms/";
Uri uri = Uri.parse(CONTENT_URI);
String selection = "date=(SELECT max(date) FROM sms)";
selection+=") GROUP BY (thread_id";
Cursor c = managedQuery(uri, null, selection, null, null);
if (c != null) {
while (c.moveToNext()) {
textView.append(c.getString(c.getColumnIndex(Column.THREAD_ID))
+ " - " + c.getString(c.getColumnIndex(Column.ADDRESS))
+ " - " + c.getString(c.getColumnIndex(Column.READ))
+ " - " + c.getString(c.getColumnIndex(Column.BODY))
+ " - " + c.getString(c.getColumnIndex(Column.DATE))
+ "\n");
}
c.close();
} else {
textView.setText("Cursor is null");
}
ありがとうございました。このケースの解決策を見つけるお手伝いをさせていただきありがとうございます。