Има ли начин да разберете защо е задействан ContentObserver? Например, ако наблюдавам SMS чрез URI „content://sms“ и SMS е изпратен или получен, има ли начин да разбера, в рамките на класа ContentObserver, какъв е типът на SMS (знам, че мога да задам N ContentObservers, указвайки различни URI, но се надявам, че има начин да се разбере от класа ContentObserver)?
БОНУС: Има и забавна тънкост:
Вторият метод е достъпен само от API ниво 16 нататък, така че кодът не трябва да разчита на URI, за да работи правилно.
ContentObserver:
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????????
}
}