Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在安卓系统中,我是否可以在只收到第一部分后在彩信中找到部分的数量?_Android_Mms_Contentobserver - Fatal编程技术网

Android 在安卓系统中,我是否可以在只收到第一部分后在彩信中找到部分的数量?

Android 在安卓系统中,我是否可以在只收到第一部分后在彩信中找到部分的数量?,android,mms,contentobserver,Android,Mms,Contentobserver,我在我的应用程序中设置了一个MMS内容观察者,每当收到新的MMS消息时,它都会被抓狂。然后它询问content://mms/inbox 并检索所有未读邮件。问题在于,彩信以部分文本的形式发送,任何音频/图片/视频附件都是单独发送的,或者至少每次下载彩信部分时,内容观察者都会被多次触发。所以,当第一部分出现时,我的应用程序会检测到它,但除了主题之外,实际上什么都没有。几秒钟后,下一部分出现,我的应用程序将其添加到第一部分。因此,如果有3个或更多的部件,这将成为一个麻烦,因为用户永远不知道是否会有更

我在我的应用程序中设置了一个MMS内容观察者,每当收到新的MMS消息时,它都会被抓狂。然后它询问content://mms/inbox 并检索所有未读邮件。问题在于,彩信以部分文本的形式发送,任何音频/图片/视频附件都是单独发送的,或者至少每次下载彩信部分时,内容观察者都会被多次触发。所以,当第一部分出现时,我的应用程序会检测到它,但除了主题之外,实际上什么都没有。几秒钟后,下一部分出现,我的应用程序将其添加到第一部分。因此,如果有3个或更多的部件,这将成为一个麻烦,因为用户永远不知道是否会有更多的部件


所以,我想等到所有的部件都进来后再通知用户有新的彩信并向他们显示。然而,我在内容提供商中看不到任何东西表明home的许多部分将全部通过。那么,我有没有遗漏什么,或者用其他方法来确定总共有多少部分?如果不需要在随机间隔上进行while循环,就可以检查是否有另一个部件进入

您要做的是检查content://mms/inbox onChange中的uri

您需要存储上一个_id,并将其与上一个项目游标的_id进行比较。在查询content://mms/inbox. 如果_id相同,您可以选择忽略/放弃上一条消息,而是存储此消息

您可以保存最后一条消息的id,并将其与onChange中cur返回的消息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
}

这与我的问题没有任何关系-我想知道在剩下的部分到来之前只得到第一部分有多少部分,据我所知,这是不可能的。好的。我想,在某个地方,有一个字段可以表示接下来会有多少部分