在我的应用程序中,我需要同时查询 SMS 和 MMS 日志以获取所有传入和传出消息的历史记录。这段代码非常适合 SMS:
Cursor c = cr.query(Uri.parse("content://sms"), null, null, null, null);
但是当我尝试以下操作时,我会得到完全不同的结果:
Cursor c = cr.query(Uri.parse("content://mms"), null, null, null, null);
SMS查询返回的数据包括消息地址(电话号码)、联系人姓名、消息主题、消息正文等... MMS的相同查询返回一堆我无法理解的空值或数值字段的。我真的需要一个当前在手机上的所有彩信的列表,其中包含与之关联的电话号码或联系人 ID,以及该消息是传入消息还是传出消息。在 SMS 查询结果中,我可以从字段中获取电话号码address,以及从字段中获取传入/传出类型,type但是当我查询 MMS 时,这些都不存在。
对于此类 MMS 数据,我需要查询不同的内容 Uri 吗?任何帮助将不胜感激。
编辑:澄清一下,我完全知道这是一个不受支持的内容提供商。但是,由于没有支持的方式来执行此操作,我完全愿意在每部手机/每个操作系统版本的基础上进行测试和支持。为了让讨论保持正轨,假设这个问题特定于 HTC Dream (G1) 或 HTC Magic (MyTouch) 上的 Android 1.6。您将如何在该特定手机和操作系统版本上完成此任务?或者,如果在这些设备上不可能,但在摩托罗拉 Droid 上的 Android 2.0 上是可能的,那么我会发现这些信息也很有帮助。但无论如何,让我们继续讨论如何以受支持或不受支持的方式完成此任务,而不是让它演变成关于我们应该如何远离 API 不支持的事情的讨论,这是我发现 Android 讨论组中充满的东西,我觉得它几乎没有提供任何帮助。如果我使用的是不受支持的方法,那很好,请告诉我完成该任务的受支持方法。如果没有支持的方法,那么为什么 API 支持允许我通过 android.permission.READ_SMS 请求读取短信的权限?