3
我試圖刪除ContentObserver(on「content:// sms /」)onChange()方法中使用contentResolver.delete接收到的SMS,但刪除ContentObserver之後再次調用一次。Android - 爲什麼ContentObserver調用自己?
你可以解釋我的ContentObserver儘管deliverSelfNotifications()返回false自己調用嗎?
我很想在刪除短信之前註冊ContentObserver並註冊後,但不雅。
我的代碼:
private class SmsMmsContentObserver extends ContentObserver {
public SmsMmsContentObserver(Handler handler)
{
super(handler);
}
@Override public boolean deliverSelfNotifications() {
return false;
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Uri uriSMSURI = Uri.parse("content://sms/");
Cursor cur = getContentResolver().query(uriSMSURI, null, null,
null, null);
if (cur.moveToNext())
{
int threadIdIn = cur.getInt(cur.getColumnIndex("thread_id"));
getContentResolver().delete(Uri.parse("content://sms/conversations/" + threadIdIn), null, null);
}
}
}
的方法來對服務的註冊觀察者。
private void registerSmsMmsObserver()
{
if (observer == null)
{
observer = new SmsMmsContentObserver(new Handler());
contentResolver = getContentResolver();
contentResolver.registerContentObserver(uriSmsMms, true, observer);
}
}
private void unregisterSmsMmsObserver()
{
if (contentResolver != null)
contentResolver.unregisterContentObserver(observer);
observer = null;
}