【问题标题】:Android MMS observer安卓彩信观察者
【发布时间】: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 Monitoring

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 上它不起作用。必须在该设备上进行测试。

标签: android mms


【解决方案1】:

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

请注意,这也会导致观察者触发 SMS 表的更改。

【讨论】:

  • 嗨,迈克,你已经回答了我关于 SO 的一些问题,并想问你一些事情。我在这里有一个项目:github.com/kalvish21/AndroidMessenger,我的目标是为一个可以从桌面发送短信和彩信的 Android 应用程序创建一个桌面客户端。我想开源它并使其免费。你有兴趣帮忙吗? mac客户端差不多完成了。基本的 UI 改进将在 Android 应用上进行。
  • 下一步是适用于 Windows 和 Linux 的桌面客户端。
  • 请以任何方式回复,希望收到您的来信。
  • 您好!我很乐意提供帮助,但目前我无法使用实际的开发机器。一段时间以来,我一直在直接在我的移动设备上做一些小事,但我真的不能为桌面做任何事情。不过,我会为你的东西保留一个书签,如果我再次设置好,我会大声告诉你。祝你的项目好运!听起来很有趣。干杯!
猜你喜欢
  • 2011-06-27
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多