2

デバイスの連絡先を表示するリストビューがあります。私がやろうとしているのは、デバイスが各連絡先から受信したテキスト メッセージの数をリストビュー内のテキスト ビューに表示することです。このコードでは、受信トレイ内のテキスト メッセージの総数しか表示できませんでした。

        // gets total count of messages in inbox
        String folder = "content://sms/inbox";
        Uri mSmsQueryUri = Uri.parse(folder);
        String columns[] = new String[] {"person", "address", "body", "date","status"}; 
        String sortOrder = "date ASC"; 
        Cursor c = context.getContentResolver().query(mSmsQueryUri, columns, null, null, sortOrder);

        textview.setText(c.getCount());

上記のコードの問題は、リストビューのすべての行について、合計のみが表示されることです。合計数を対応する連絡先に分割するにはどうすればよいですか?

受信トレイに 100 件のメッセージがある 場合、最終結果は次のようになります

フー・マンチュー:25

バービー:15

スナフウ:10

ジョン・ドウ:50

4

2 に答える 2

3
Uri SMS_INBOX = Uri.parse("content://sms/conversations/");

Cursor c = getContentResolver().query(SMS_INBOX, null, null, null, null);

    startManagingCursor(c);
    String[] count = new String[c.getCount()];
    String[] snippet = new String[c.getCount()];
    String[] thread_id = new String[c.getCount()];

    c.moveToFirst();
    for (int i = 0; i < c.getCount(); i++) {
        count[i] = c.getString(c.getColumnIndexOrThrow("msg_count"))
                .toString();
        thread_id[i] = c.getString(c.getColumnIndexOrThrow("thread_id"))
                .toString();
        snippet[i] = c.getString(c.getColumnIndexOrThrow("snippet"))
                .toString();
        Log.v("count", count[i]);
        Log.v("thread", thread_id[i]);
        Log.v("snippet", snippet[i]);
        c.moveToNext();
    }

ログと問題解決を参照してください。同じ質問を再投稿しないでください:連絡先から受信したテキスト メッセージの数を表示するにはどうすればよいですか?

于 2012-05-15T02:49:29.030 に答える
1

おそらくString 配列に追加count(person) AS cntしてから、メソッドに引数として追加します。columnspersongroupByquery

編集:

Jensが指摘したように、GROUP BYパラダイムはメッセージング ContentProvider によってサポートされていません。

あなたができることは、アプリケーションの起動時に独自のメモリ内データベースを作成し (http://www.sqlite.org/inmemorydb.html)、システム メッセージング データベースから対象のメッセージをコピー アンド ペースト (クエリ挿入) することです。インメモリデータベースに。(:メモリが不足していて、関心のあるメッセージが大量にある場合、これはうまくいかない可能性があります)。あなたはインメモリデータベースで神になるので、あなたが望むエキゾチックなSQLクエリに合うようにクエリを実行できます...

于 2012-05-14T09:17:41.687 に答える