我们可以使用ContentObserver来观察数据库字段的变化吗? (不插入和删除)

时间:2015-01-31 19:24:53

标签: android android-sqlite sqliteopenhelper contentobserver

这是我的情况。我想知道我们设备中的任何短信是否已从未读更改为已阅读。所以我使用这个ContentObserver来观察数据库的变化。

this.getApplicationContext().getContentResolver().registerContentObserver(Uri.parse("content://sms/"),true,new TextContentObserver(new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

它完美地工作,当状态改变时我得到回调。但我无法找到哪些短信改变了。我只是盲目地说短信数据库已被触及。有没有办法从ContentObserver中找出哪条记录已更新/插入/删除?

修改: TextContentObserver只是一个获得回调的类。

class TextContentObserver extends ContentObserver {


    public TextContentObserver(Handler handler) {
        super(handler);
    }

    @Override
    public boolean deliverSelfNotifications() {
        return true;
    }

    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
        //How to find what DB change happened?
        //insert/delete/update?

    }

}

0 个答案:

没有答案