Отправленный SMS наблюдатель имеет двойной выход

Я пытаюсь сделать SMS-обозреватель для исходящих сообщений, используя ContentObserver, Код ниже работает отлично, но всякий раз, когда я проверяю это, отправляя текстовое сообщение коллеге, я получаю вывод дважды.

Наблюдатель регистрируется в Сервисе, например так:

SentSMSObserver sentSMSObserver = new SentSMSObserver(new Handler(), this);
getContentResolver().registerContentObserver(sentSMSObserver.CONTENT_SMS_URI, true, sentSMSObserver);

Всякий раз, когда я отправляю текстовое сообщение на свой номер, я получаю вывод только один раз, что действительно странно. Поскольку Служба - это Синглтон (насколько мне показалось, мое исследование), то совершенно невероятно, что есть второй случай с моим наблюдателем.

public class SentSMSObserver extends ContentObserver {

    private static final String CONTENT_SMS = "content://sms";
    public final Uri CONTENT_SMS_URI = Uri.parse(CONTENT_SMS);
    private Context context;

    public SentSMSObserver(Handler handler, Context context) {
        super(handler);
        this.context = context;
    }

    @Override
    public void onChange(boolean selfChange) {
        Cursor cursor = context.getContentResolver().query(CONTENT_SMS_URI, null, null, null, null);
        try {
            if (cursor.moveToNext()) {
                String protocol = cursor.getString(cursor.getColumnIndex("protocol"));
                int type = cursor.getInt(cursor.getColumnIndex("type"));
                if (protocol != null || type != Telephony.TextBasedSmsColumns.MESSAGE_TYPE_SENT) {
                    return;
                }

                String to = cursor.getString(cursor.getColumnIndex("address"));
                Date now = new Date(cursor.getLong(cursor.getColumnIndex("date")));
                String message = cursor.getString(cursor.getColumnIndex("body"));
                Log.e("sentmessage", to + " - " + now + " - " + message);
            }
        } finally {
            cursor.close();
        }
    }
}

Logcat:

08-11 14:25:14.292  12574-12574/com.androidfun.smstest E/sentmessage﹕ +(deleted phone n°) - Mon Aug 11 14:25:10 CEST 2014 - Test
08-11 14:25:18.306  12574-12574/com.androidfun.smstest E/sentmessage﹕ +(deleted phone n°) - Mon Aug 11 14:25:10 CEST 2014 - Test

1 ответ

Отправленные сообщения также обновляются с помощью "отправленного подтверждения" и даже "подтверждения доставки" в некоторых случаях. Отправляя его себе, вы, вероятно, не получаете "отправленное подтверждение", потому что оно отправляет и подтверждает за один шаг.

Смотрите пост здесь:

Отправленное смс наблюдателем выполняется 3 раза

Другие вопросы по тегам