如何查询Android中的MMS日志

Mar*_*k B 8 sms android mms android-contentprovider

在我的应用程序中,我需要查询SMS和MMS日志以获取所有传入和传出消息的历史记录.这段代码非常适合SMS:

Cursor c = cr.query(Uri.parse("content://sms"), null, null, null, null);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试以下操作时,我会得到完全不同的结果:

Cursor c = cr.query(Uri.parse("content://mms"), null, null, null, null);
Run Code Online (Sandbox Code Playgroud)

SMS查询返回包含消息地址(电话号码),联系人姓名,消息主题,消息正文等的数据... MMS的相同查询返回一堆我无法理解的空值或数值字段的.我真的需要一个当前手机上所有MMS消息的列表,其中包含与之关联的电话号码或联系人ID,以及该消息是传入或传出消息.在SMS查询结果中,我可以从address字段中获取电话号码,从字段中获取传入/传出类型,type但是当我查询MMS时,这些都不存在.

是否有不同的内容Uri,我需要查询这种MMS数据?任何帮助将不胜感激.

编辑:只是为了澄清,我完全清楚这是一个不受支持的内容提供商.但是,由于没有支持的方法,我完全愿意在每个手机/每个OS版本的基础上测试和支持这个.为了让讨论保持正轨,可以说这个问题是针对HTC Dream(G1)或HTC Magic(MyTouch)上的Android 1.6特有的.您将如何在特定的手机和操作系统版本上完成此任务?或者如果它不可能,但在摩托罗拉Droid上的Android 2.0上是可能的,那么我会发现这些信息也非常有用.但无论如何,让我们坚持讨论如何以支持或不支持的方式完成此任务,而不是让它讨论我们应该如何远离API不支持的事情,这是我的事情.发现Android讨论组充满了各种各样的东西,我认为这些讨论组几乎没有任何帮助.如果我使用的是不受支持的方法,那很好,请告诉我完成该任务所支持的方法.如果没有支持的方法,那么为什么API支持允许我通过android.permission.READ_SMS请求读取SMS的权限?

Gin*_*ray 5

这些是我过去使用过的内容.你必须弄清楚你得到的价值,并且距离获取彩信部分还有很长的路要走,但希望它会有所帮助.

// root URI for MMS messages
static final String MMS_CONTENT_URI = "content://mms";

// root URI for MMS and SMS threads
public static final String MMS_SMS_CONTENT_URI = "content://mms-sms";

// URI of MMS inbox
public static final String RECEIVED_MMS_CONTENT_URI = MMS_CONTENT_URI + "/inbox";

// URI where sent MMSes are stored
public static final String SENT_MMS_CONTENT_URI = MMS_CONTENT_URI + "/sent";

// URI where sent MMSes are stored
public static final String MMS_PART_URI = MMS_CONTENT_URI + "/part";

// URI for incoming SMSes (also triggers on MMSes)
public static final String SMS_INBOX_URI = "content://sms/inbox";
Run Code Online (Sandbox Code Playgroud)