Последнее отправленное SMS / текстовое сообщение: как получить с помощью ContentObserver? - PullRequest
1 голос
/ 31 декабря 2010

Я знаю, что вокруг есть несколько вопросов, и я, наверное, прошел через все.

Мой оператор достаточно любезен, чтобы предлагать 50 бесплатных SMS каждый месяц.Теперь я хотел бы сделать небольшой счетчик, который работает в фоновом режиме и уведомляет меня, когда я достигаю этого предела.(Да, я знаю, что для этого уже будут приложения).Поэтому я хотел бы, чтобы сервис получал уведомления, когда SMS / тестовое сообщение отправлено отправлено .Таким образом, путь будет ContentObserver.Я установил один (2) и зарегистрировал его следующим образом (1):

(1)
Uri URI = Uri.parse("content://sms/sent");
String[] columns = {"_id", "date"};
Cursor c = context.getContentResolver().query(URI, columns, "type=?", new String[]{"1"}, "_id DESC");
Observer observer = new Observer(context);
c.registerContentObserver(observer);

(2)
private class Observer extends ContentObserver {
    Context context;
    public Observer(Context context) {
        super(null);
        this.context = context;
    }
    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
        // some code here
    }
}

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

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

Заранее спасибо,
Steff

...