ContentObserver がトリガーされた理由を知る方法はありますか? たとえば、「content://sms」URI を介して SMS を監視していて、SMS が送受信されている場合、ContentObserver クラス内で SMS タイプを推測する方法はありますか (N を設定できることはわかっています)。別の URI を指定する ContentObservers ですが、ContentObserver クラスから伝える方法があることを願っています)?
ボーナス: 楽しい機微もあります:
2 番目の方法は、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????????
}
}