Android彩信观察者

Android MMS observer

我有以下代码:

public class MmsObserver extends ContentObserver {
    private Context context;

    public MmsObserver(Handler handler) {
        super(handler);
        this.context = service.getBaseContext();
    }

    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);

        Long largestDateCounted = Long.parseLong(UserPreferencesManager.getInstance().getValueFromPreferences(context, context.getString(R.string.preferences_current_counter), "0"));
        String filter = "creator != ? and date > ?";
        String[] args = new String[]{context.getPackageName(), Long.toString(largestDateCounted)};
        Cursor c = context.getContentResolver().query(Constants.Mms, null, filter, args, null);

        try {

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            c.close();
        }
    }
}

我正在尝试观察用户 sends/receives 收到彩信的时间。但是,我的观察员永远不会被调用。有什么我想念的吗?我已阅读以下内容:

Android MMS Monitoring

Android MMS Broadcast receiver

编辑

我是这样的 运行 观察者:

mmsContent = new MmsObserver(new Handler());
getContentResolver().registerContentObserver(Constants.Mms, true, mmsContent);

为 MMS 注册 ContentObserver 时,URI 需要是 content://mms-sms/,至少在较旧的 Android 版本上是这样。出于某种原因,content://mms/ 不适用于 ContentObserver,除了可能触发对草稿消息的更改。

请注意,这也会导致 Observer 触发 SMS table 的更改。