我有以下代码:
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();
}
}
}
我正在尝试观察用户何时发送/接收彩信。但是,我的观察者永远不会被召唤。我有什么遗漏吗?我已阅读以下内容:
Android MMS Broadcast receiver
修改
这是我如何运行观察者:
mmsContent = new MmsObserver(new Handler());
getContentResolver().registerContentObserver(Constants.Mms, true, mmsContent);
答案 0 :(得分:1)
为MMS注册ContentObserver
时,URI必须为content://mms-sms/
,至少在较旧的Android版本上。由于某些原因,content://mms/
不适用于ContentObserver
,除了可能触发对草稿邮件的更改。
请注意,这也会导致Observer触发对SMS表的更改。