0

ユーザーと番号の間の会話全体を取得するために、次のコードを作成しました。

Uri SMS_INBOX = Uri.parse("content://sms/");
        String selection = "thread_id = " + thread_id;
        final String[] projection = new String[] { "*" };
        Cursor c = getContentResolver().query(SMS_INBOX, projection, selection,null, "date");

        startManagingCursor(c);

        String[] body = new String[c.getCount()];
        String[] address = new String[c.getCount()];
        if (c.moveToFirst()) {
            for (int j = 0; j < c.getColumnCount(); j++)
                Log.w("ColumnName", c.getColumnName(j));
            for (int i = 0; i < c.getCount(); i++) {
                body[i] = c.getString(c.getColumnIndexOrThrow("body")).toString();
                address[i] = c.getString(c.getColumnIndexOrThrow("address")).toString();
                Log.d("address-" + i, address[i]);
                Log.d("body-" + i, body[i]);
                String subject =  c.getString(c.getColumnIndexOrThrow("_id")).toString();
                Log.d("_id-" + i, subject);
                String thread =  c.getString(c.getColumnIndexOrThrow("thread_id")).toString();
                Log.d("thread_id-" + i, subject);
                Log.d("----", "----");

                c.moveToNext();
            }

        }

このコードを介して、会話内のすべてのメッセージを取得します。問題は、どの番号がどのメッセージを送信しているのかわからないことです。「アドレス」列を取得すると、常に同じ番号が返されるため(実際には相手の番号のみが返されます)、このコードを介して取得したメッセージがユーザーによって送信されたのか、それとも他の番号。

4

1 に答える 1

1

列には常に二人目の番号のみが表示されます。送信メッセージと受信メッセージを区別したい場合は、列「タイプ」を使用する必要があります。

body[i] = c.getString(c.getColumnIndexOrThrow("body")).toString();

if(c.getString(c.getColumnIndex("type")).equalsIgnoreCase("1")){

                // sms received

                msg_state[i]=1;

             }

              else {
                //sms sent
                msg_state[i]=0;

             }

いいえ 送信したSMSと受信したSMSを簡単に識別できます。

于 2012-08-31T12:05:01.890 に答える