Есть ли способ узнать, почему был запущен ContentObserver? Например, если я отслеживаю SMS через URI «content://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????????
}
}