content: // столбец sms / address не всегда возвращает номер "отправителя" - PullRequest
1 голос
/ 18 февраля 2012

Когда я запрашиваю контент-провайдера "content: // sms /" и извлекаю информацию из столбца адреса; Я всегда получаю номер телефона, по которому сообщение отправлено или отправлено. Если я получаю сообщение, то адрес - это номер телефона другого человека. Когда я отправляю сообщение, то адресом является сообщение, которому я отправляю.

Как определить, является ли сообщение в папке "content: // sms /" отправленным или полученным сообщением без запроса соответствующих папок входящих / отправленных?

    Uri uri = Uri.parse("content://sms/");
    String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body" };
    String selection = "thread_id = " + threadId;
    String sortOrder = "date DESC";
    String limit = "LIMIT " + String.valueOf(mItemsOnPage);

    TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    String deviceNumber = tm.getLine1Number();

    Cursor cursor = getContentResolver().query(uri, columns, selection, null,
            sortOrder + " " + limit);

    if (cursor != null) {
        cursor.moveToLast();

        while (!cursor.isBeforeFirst()) {
            long messageId = cursor.getLong(0);
            String address = cursor.getString(2);
            long date = cursor.getLong(4);
            String body = cursor.getString(5);
            long person = cursor.getLong(3);
            cursor.moveToPrevious();
        }
    }
    cursor.close();

Ответы [ 3 ]

4 голосов
/ 18 февраля 2012

Вам необходимо включить столбец type в ваш запрос.Он содержит long , указывающий, имеете ли вы дело с полученным (type == 1) или отправленным (type == 2) сообщением.

Таким образом, вы будете знать, как интерпретировать адресный столбец.

0 голосов
/ 21 февраля 2015
public static final Uri SMS_Inbox = Uri.parse("content://sms/inbox");
public static final Uri SMS_Sent = Uri.parse("content://sms/sent");
public static final Uri SMS_draft = Uri.parse("content://sms/draft");
public static final Uri SMS_Queued = Uri.parse("content://sms/queued");
public static final Uri SMS_ALL = Uri.parse("content://sms/");

public static final int INBOX = 1;
public static final int SEND = 2;
public static final int DRAFT = 3;
public static final int QUEUED = 6;
0 голосов
/ 01 марта 2013

type 5 выглядит как черновой тип сообщения (по крайней мере, для Samsung i9100)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...