在Android中,我可以在收到第一部分后找到彩信中的部分数量吗?

时间:2013-08-05 01:25:43

标签: android mms contentobserver

我的应用程序中设置了一个MMS内容观察器,当有新的MMS消息到达时,它会被触发。然后它查询“”内容:// mms / inbox“并检索任何未读消息。问题是MMS到达部分(文本,任何音频/图片/视频附件分开进入)或者至少内容观察者得到触发多次(每当下载每个MMS部分时)。所以,当第一部分进来时,我的应用程序检测到它,但除了主题之外没有任何东西。几秒钟后,下一部分进来,并且我的应用程序将它添加到第一个。所以,如果有3个或更多部分,这会变得令人讨厌,因为用户永远不知道是否会有更多的部件到来。

所以,我想等到所有部分进入之后再通知用户有新的MMS并向他们显示。但是,我没有在内容提供商中看到有任何内容表明家庭中的许多部分将会通过。那么有什么我缺少的东西,或者任何其他方式来确定总共会有多少部分? (没有在随机间隔上有一个while循环检查另一个部分是否进入)

1 个答案:

答案 0 :(得分:0)

您要做的是检查onChange中_id uri中最后一项的content://mms/inbox

在查询cursor.moveToLast()后,您需要存储前一个_id并将其与光标最后一项(content://mms/inbox)的_id进行比较。如果_id相同,您可以选择忽略/放弃之前的消息,而是存储此消息。

您可以保存上一封邮件的ID,并将其与curonChange返回的邮件的ID进行比较。如果ID相同,那么你可以简单地忽略该消息。

// might contain mistakes, but you'll get the idea:
protected void querySMS() {
    Cursor cur = getContentResolver().query(u, null, null, null, null);
    cur.moveToNext(); 
    if (lastId == cur.getLong(cur.getColumnIndex("_id")))
        return;
    lastId = cur.getLong(cur.getColumnIndex("_id"));
    ... //continue as it was
}