这是我的情况。我想知道我们设备中的任何短信是否已从未读更改为已阅读。所以我使用这个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?
}
}