Как получить получателя исходящего смс - PullRequest
0 голосов
/ 09 января 2012

У меня есть ContentObserver для всех SMS, отправленных / полученных на телефон, и при отправке SMS это данные, которые я получаю из курсора:

01-09 09:52:13.523: I/WOWOW(1830): _id: 213
01-09 09:52:13.523: I/WOWOW(1830): thread_id: 1
01-09 09:52:13.523: I/WOWOW(1830): address: null
01-09 09:52:13.523: I/WOWOW(1830): person: null
01-09 09:52:13.523: I/WOWOW(1830): date: 1326120733305
01-09 09:52:13.523: I/WOWOW(1830): date_sent: 0
01-09 09:52:13.523: I/WOWOW(1830): protocol: null
01-09 09:52:13.527: I/WOWOW(1830): read: 1
01-09 09:52:13.527: I/WOWOW(1830): status: -1
01-09 09:52:13.527: I/WOWOW(1830): type: 3
01-09 09:52:13.527: I/WOWOW(1830): reply_path_present: null
01-09 09:52:13.527: I/WOWOW(1830): subject: null
01-09 09:52:13.527: I/WOWOW(1830): body: Hello i am testing
01-09 09:52:13.527: I/WOWOW(1830): service_center: null
01-09 09:52:13.527: I/WOWOW(1830): locked: 0
01-09 09:52:13.527: I/WOWOW(1830): error_code: 0
01-09 09:52:13.527: I/WOWOW(1830): seen: 0

Теперь из этих данных я могу получить сообщение SMS, время его отправки, но я не понимаю, как мне получить получателя. Может ли кто-нибудь помочь мне здесь? Спасибо!

Ответы [ 2 ]

1 голос
/ 10 января 2012

Решение этой проблемы для любого телефона, который поддерживает контент: // sms (не совсем уверен, что нет, но большинство делают), состоит в том, чтобы проверить, является ли «адрес» не нулевым, и не является ли он нулевым , также проверьте, отличается ли последний проверенный «_id» сообщения, потому что content: // sms иногда дает одно и то же сообщение 3-4 раза, и только один из них имеет «адрес» в качестве реального значения, а не ноль. Вот мой окончательный код в моем ContentObserver onChange:

Cursor cur = contentResolver.query(Uri.parse("content://sms"), null, null, null, null);
    cur.moveToNext();
    String id = cur.getString(cur.getColumnIndex("_id"));

    final String user_id = settings.getString("user_id", "0");

    if(!cur.getString(cur.getColumnIndex("address")).equals("null") && !id.equals(lastId)) {
        for(int i =0; i < cur.getColumnNames().length; i++) {
            Log.i("WOWOW", cur.getColumnName(i) + ": " + cur.getString(cur.getColumnIndex(cur.getColumnName(i))));
        }
        Log.i("WOWOW", "*****************************************************");
        lastId = id;
    }
1 голос
/ 09 января 2012

На этот вопрос ответили здесь некоторое время назад.(Скопировано для удобства).

"content: // sms /" официально не задокументировано, и его реализация зависит от производителя устройства.нет никакого чистого способа получить любую связанную с смс информацию.

...