1

我知道周围有一些问题,我想我已经解决了所有问题。

我的运营商很友好,每个月提供 50 条免费短信。现在我想为自己做一个在后台运行的小计数器,并在我达到该限制时通知我。(是的,我知道已经有这方面的应用程序)。因此,我希望在发送 SMS/test msg 时通知服务。所以要走的路是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 是否已经存在,但这似乎是一个不整洁的解决方案,我想做不同的事情。

在此先感谢,
斯特夫

4

0 回答 0