`
JasonShieh
  • 浏览: 531666 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

android的短信会话操作的较好实现方式

阅读更多
    经过一段时间的尝试与研究发现,Android系统的会话Uri并不令人满意,Thread和Conversation下的CONTENT_URI联合查询倒是可以查询出部分会话的完整信息,但仍可能遗漏掉一些会话。看到其他网友的做法很不错,利用短信会话的thread_id来进行查询等操作,确实可以达到一些主要的会话操作功能。值得推荐一下。
分享到:
评论
4 楼 JasonShieh 2011-01-13  
zhq56030207 写道
还是没有解决~~~

下面是com.android.providers.telephony.MmsSmsProvider这个类的删除操作源码,注意:
 if (affectedRows > 0) {
            context.getContentResolver().notifyChange(MmsSms.CONTENT_URI, null);
        }
这一句,希望对你有帮助:MmsSms.CONTENT_URI的值为:Uri.parse("content://mms-sms")

    @Override
    public int delete(Uri uri, String selection,
            String[] selectionArgs) {
        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
        Context context = getContext();
        int affectedRows = 0;

        switch(URI_MATCHER.match(uri)) {
            case URI_CONVERSATIONS_MESSAGES:
                long threadId;
                try {
                    threadId = Long.parseLong(uri.getLastPathSegment());
                } catch (NumberFormatException e) {
                    Log.e(LOG_TAG, "Thread ID must be a long.");
                    break;
                }
                affectedRows = deleteConversation(uri, selection, selectionArgs);
                MmsSmsDatabaseHelper.updateThread(db, threadId);
                break;
            case URI_CONVERSATIONS:
                affectedRows = MmsProvider.deleteMessages(context, db,
                                        selection, selectionArgs, uri)
                        + db.delete("sms", selection, selectionArgs);
                // Intentionally don't pass the selection variable to updateAllThreads.
                // When we pass in "locked=0" there, the thread will get excluded from
                // the selection and not get updated.
                MmsSmsDatabaseHelper.updateAllThreads(db, null, null);
                break;
            case URI_OBSOLETE_THREADS:
                affectedRows = db.delete("threads",
                        "_id NOT IN (SELECT DISTINCT thread_id FROM sms " +
                        "UNION SELECT DISTINCT thread_id FROM pdu)", null);
                break;
            default:
                throw new UnsupportedOperationException(NO_DELETES_INSERTS_OR_UPDATES);
        }

        if (affectedRows > 0) {
            context.getContentResolver().notifyChange(MmsSms.CONTENT_URI, null);
        }
        return affectedRows;
    }
3 楼 zhq56030207 2010-12-31  
还是没有解决~~~
2 楼 JasonShieh 2010-12-09  
同时监听短信的URI和会话的URI试试看。你只监听了短信的URI有可能导致这个问题。具体你看系统的会话ContentProvider里的监听方式,跟短信URI的监听提供方式有没有联系
1 楼 zhq56030207 2010-12-08  
hello,我想问一下,我做了一个同步显示短信内容和数目的程序,我的程序中要收集短信的条数,如果逐条的删除,则我的程序会同步更新短信的条数,但是当我用删除整个会话的操作后,短信的条数得不到同步的更新,
我想问一下,这两种操作方式有什么区别呢?
[url]
http://www.eoeandroid.com/redirect.php?tid=49122&goto=lastpost&from=fastpost&random=0.21679852020274903#lastpost[/url]
希望你能帮忙解答,谢谢

相关推荐

    【Android】短信应用——短信(会话)实时删除

    总之,实现实时删除短信会话功能涉及Android的权限管理、数据库操作、Loader机制、ContentObserver以及UI更新。理解这些核心概念,并结合具体的实践示例,可以帮助你更好地构建一个功能完善的短信应用。

    【Android】短信应用——短信(会话)删除

    首先,我们要了解Android系统的短信存储结构以及如何通过编程方式访问和操作这些数据。 Android系统中的短信通常存储在SQLite数据库中,每个短信对应一个表中的记录,而会话则是一系列相关的短信记录。当我们谈论...

    【Android】短信应用——短信(会话)删除

    【Android】短信应用——短信(会话)删除Demo 相关文章:http://blog.csdn.net/etzmico/article/details/7077123

    android短信会话测试.doc

    本文将详细讲解如何利用ContentProvider进行短信会话的读写操作,这对于理解和实现Android系统的内部工作原理至关重要。 首先,ContentProvider是Android四大组件之一,它提供了一种标准接口,使得应用可以访问其他...

    【Android】短信应用——短信(会话)实时删除

    总的来说,实现在Android应用中实时删除短信和会话涉及对SQLite数据库的操作、使用ContentObserver监听数据变化,以及在后台线程中执行删除任务。理解这些概念和技术,对于Android开发者来说是至关重要的,特别是...

    安卓短信会话,短信详情

    本文将深入探讨如何处理安卓短信的发送、监听以及会话列表的展现,这些都是Android SMS应用程序开发中的核心知识点。 首先,我们来了解一下“短信会话”。短信会话是指在特定时间段内,两个或多个联系人之间的一...

    功能齐全的android短信平台-实现收发短信、不同会话列表显示、同一会话左右显示,删除、草稿、关联联系人

    功能齐全的android短信平台,实现功能(1)收发短信(2)不同会话列表显示(3)同一会话左右显示(4)添加联系人至收件人(5)通过上下文菜单拨打电话(6)通过menu菜单进入进入草稿箱(7)删除可以全选、反选,单条...

    实例详解Android 获取短信会话列表

    由于Android官方并未提供直接的Content Provider来处理短信会话,开发者需要利用系统提供的SQLite数据库接口和自定义URI来实现这一功能。本文将通过实例详细介绍如何在Android中获取短信会话列表。 首先,我们了解...

    Android 短信SMS发送代码流程

    Android 短信SMS发送代码流程 Android 短信SMS发送代码流程是 Android 操作系统中的一种重要功能,允许用户发送...只有通过深入了解 Android 短信SMS发送代码流程,才能更好地理解 Android 短信发送功能的实现机制。

    PPC 短信会话切换.rar

    7. **跨平台兼容**:随着多设备使用的普及,短信会话切换功能也需要在不同操作系统(如Android、iOS)以及各种设备(手机、平板电脑)间保持一致性,确保用户在任何设备上都能无缝切换。 8. **个性化设置**:为了...

    Android短信数据库基础(开发资料)

    本文将深入探讨如何在Android开发中操作短信数据库,主要包括三个关键表:Canonical_addresses、Threads和Sms,以及如何利用这些表来读取短信、短信会话列表和特定联系人的短信。 1. **短信数据库路径** Android...

    Android短信/彩信管理-短信修改.rar

    Android手机短信/彩信管理-包括了已接收短信修改,  进入初始页面 EntryPage,传递数据:  1 标题,即该viewtitem的名称  2 类型,短信为0,彩信为1,所有会话为2,  点击短信时 传递标题“短信”,传递0,进入...

    android删除手机短信

    在Android系统中,删除手机短信是一项...以上就是关于在Android设备上删除短信的相关知识,包括手动操作和编程实现。希望这个实例对初学者理解Android SMS管理有所帮助,同时也提醒大家谨慎操作,避免误删重要信息。

    短信会话显示的方法、装置和终端.zip

    标题中的“短信会话显示的方法、装置和终端”暗示了这是一个关于移动通信或者智能手机技术的专题,特别是涉及用户界面设计和交互方式。该主题可能详细阐述了如何在移动设备上优化短信会话的呈现方式,以提高用户体验...

    android studio连接云服务器mysql实现登录注册

    总之,实现"android studio连接云服务器mysql实现登录注册"涉及到Android应用开发、网络编程、数据库操作和服务器端API设计等多个方面。理解并掌握这些知识点,将有助于你构建出稳定、安全的移动应用。在实际开发...

    Android-Android打开QQ企业临时会话

    在Android平台上,打开QQ企业临时会话是一种常见的社交功能,它允许用户直接通过应用程序与特定的QQ企业号进行沟通,而无需离开当前的应用。这个功能的实现涉及到Android开发中的多种技术,包括Intent、第三方应用的...

    通过编程实现临时会话平台

    ### 通过编程实现临时会话平台 #### 概述 本文档主要介绍如何通过编程来构建一个临时会话平台,使未添加为好友的用户也能进行即时通讯。该平台基于腾讯提供的互动服务功能,利用其生成的网页代码,使得用户可以...

    android 开发 push 短信协议解析

    在Android开发中,Push短信是一种常见的消息传递方式,特别是在MMS(Multimedia Messaging Service)不支持Push机制的情况下。Push短信协议解析是理解如何接收和处理此类短信的关键,这对于构建高效、可靠的通信应用...

    android 7.0非root下 实现静默安装 多种方式

    尽管这需要用户同意,但一旦设置好,可以实现批量管理和静默操作。 请注意,非root用户在Android 7.0上执行静默安装和卸载时,必须遵循严格的权限和安全规定,否则可能导致系统不稳定或违反Google Play政策。因此,...

    Android集成网易云IM实现单聊和群聊

    在Android应用开发中,集成网易云信IM是实现即时通讯功能的一种常见选择。网易云信IM提供了一套完整的SDK和服务,让开发者能够快速地在应用中加入聊天、群组等功能,从而提升用户体验。本文将详细讲解如何在Android...

Global site tag (gtag.js) - Google Analytics