有没有办法告诉 ContentObserver 被触发的原因?例如,如果我通过“content://sms”URI 监控 SMS 并且发送或接收 SMS,有没有办法在 ContentObserver 类中推断 SMS 类型是什么(我知道我可以设置 N ContentObservers,指定不同的 URI,但我希望有办法从 ContentObserver 类中分辨出来)?
奖励:还有一个有趣的微妙之处:
第二种方法仅从 API 级别 16 开始可用,因此代码不应依赖 URI 才能正常工作。
内容观察者:
ContentResolver contentResolver = getBaseContext().getContentResolver();
contentResolver.registerContentObserver(Uri.parse("content://sms"), true,
new MessageObserver(new Handler(), getBaseContext()));
ContentObserver 类:
class SMSObserver extends ContentObserver {
public MyObserver(Handler handler) {
super(handler);
}
@Override
public void onChange(boolean selfChange) {
this.onChange(selfChange, null);
// What SMS type caused this to trigger????????
}
@Override
public void onChange(boolean selfChange, Uri uri) {
// What SMS type caused this to trigger????????
}
}