【发布时间】:2016-08-26 07:41:07
【问题描述】:
我有以下代码:
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);
【问题讨论】:
-
您是如何注册 Observer 的?当更改发生时,您确定您的
Service(大概)正在运行吗? -
我更新了我的问题。是的,服务正在运行,我有一个 SMS 观察器,它也一直在运行(并且工作)。
-
哦,对不起,我主要是询问您正在使用的特定
Uri。它必须是content://mms-sms/,至少在旧版本上是这样。我没有通过源代码来找出原因,但由于某种原因,content://mms/不适用于ContentObserver。请注意,这也会触发 SMS。 -
没错!如果你把它放在下面,我会接受你的回答。
-
奇怪的是,在某些手机上
content://mms-sms/不起作用。至少在查询新消息时。在 Galaxy S6 上它不起作用。必须在该设备上进行测试。