`
407827531
  • 浏览: 1076002 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

解析MMS

阅读更多

 

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

  1. Monitor incoming mms event
    class MMSHandler extends Handler
    {
        public void handleMessage(Message msg)
        {
            //Handle message
        }
    }

    class MMSObserver extends ContentObserver
    {
        private Handler m_handler = null;

        public MMSObserver (Handler handler)
        {
            super(handler);
            m_handler = handler;
        }

        public void onChange(boolean bSelfChange)
        {
            super.onChange(bSelfChange);

            //Send message to Activity
            Message msg = m_handler.obtainMessage;
            msg.obj = "xxxxxxxxxx";
            msg.sendToTarget();

            Uri uriMMSURI = Uri.parse("content://mms");
            Cursor cur = this.getContentResolver().query(uriMMSURI , null, null,
                         null, null);
            while(cur.moveToNext())
            {
                    String subject = cur.getString(cur.getColumnIndex("sub"));
                    String addr; //Get mms' address
                    if (subject == null && addr == null)
                    {
                         continue; //Ignore the mms since it is auto saved into draft temporarily
                    }
     
                   Calculate the mms's signature;
                   Search the signature in Cache
                   If the signature is found, call "continue"
                   Else this is new mms.
            }
        }
    }

    //First, cache all messages' signature (can contain addr, id, transaction id (colume name is tr_id), and hash code of subject + body) in to hash table
    ContentResolver contentResolver = getContentResolver();
    Handler handler = new MMsHandler();
    ContentObserver m_MMSObserver = new MMSObserver(handler);
    contentResolver.registerContentObserver(Uri.parse("content://mms-sms/"),
    true, m_MMSObserver);  //Register to observe MMS)
    //Release cache
  2. Parse MMS
    The mms/sms are stored in SQLite file
    /data/data/com.android.providers.telephony/databases/mmssms.db
    /data/data/com.android.providers.telephony/app_parts/*
    mmssms.db srotes the sms and mms information, and the files under app_parts stores the files attached in MMS.
    Other application has no permission to access that database file, we only can read mms/sms throung content provider.

    Sample code:
    Cursor curPdu = getContentResolver().query(Uri.parse("content://mms"), null, null, null, null);
    int id = curPdu.getInt(curPdu.getColumnIndex("_id"));
    int thread_id = curPdu.getInt(curPdu.getColumnIndex("thread_id"));
    String subject = curPdu.getString(curPdu.getColumnIndex("sub");
    int date = curPdu.getInt(curPdu.getColumnIndex("date"));

    //Delete mms, need not delete its attachments explicitly, since they will be deleted automatically
    getContentResolver().delete(Uri.parse("content://mms/" + Integer.toString(id)));

    String selectionAddr = new String("msg_id='" + Integer.toString(id) + "'");
    Uri uriAddr = Uri.parse("content://mms/" + curPdu.getString(curPdu.getColumnIndex("_id")) + "/addr"); //use provider 'content://mms/#/addr' to get address
    Cursor curAddr = getContentResolver().query(Uri.parse(uriAddr, null, selectionAddr, null, null);
    String contact_id = curAddr.getString(curAddr.getColumnIndex("contact_id"));
    String address = curAddr.getString(curAddr.getColumnIndex("address"));

    String selectionPart = new String("mid='" + Integer.toString(id) + "'");
    Cursor curPart = getContentResolver().query(Uri.parse("content://mms/part"), null, selectionPart, null, null);
    /*
    //You can also use following code
    Cursor curPart = getContentResolver().query(Uri.parse("content://mms/" + Integer.toString(id) + "/part"), null,null , null, null);
    */
    while(curPart.moveToNext())
    {
        String type = curPart.getString(curPart.getColumnIndex("ct"));  //content type
        String attachmentpath = curPart.getString(curPart.getColumnIndex("_data"));
        String cid = curPart.getString(curPart.getColumnIndex("cid"));

        if (cid.euqals("<text_0>")  //Current row stores MMS body
        {
            String body = curPart.getString(curPart.getColumnIndex("text"));
        }
        else if (!attachmentpath.euqals(null))  //Current row stores MMS  attachment, following code is used to read the attachment file
        {
            int _partID = curPart.getInt(curPart.getColumnIndex("_id"));
            String partID = String.valueOf(_partID);
            Uri partURI = Uri.parse("content://mms/part/" + partID);
                       
            ByteArrayOutputStream baos = new ByteArrayOutputStream();  //This is attachment
            InputStream is = null;

            try
            {
                is = getContentResolver().openInputStream(partURI);
                byte[] buffer = new byte[256];
                int len = is.read(buffer);
                while (len >= 0)
                {
                    baos.write(buffer, 0, len);
                    len = is.read(buffer);
                }
            }
            catch (IOException e)
            {
            }
            finally
            {
                if (is != null)
                {
                    try
                    {
                        is.close();
                    } catch (IOException e) {}
                }
            }
        }
    }

    if (curPart.moveToFirst())
    do
    {
       
    }

    Declare permission
    <uses-permission android:name="android.permission.READ_SMS" />
  3. Others
    1. About what tables are created in mmssms.db
      1. adb pull /data/data/com.google.providers.telephony/databases/mmssms.db .
      2. strings mmssms.db  > tmp.txt
      3. vi tmp.txt, and search 'CREATE TABLE'
    2. All avaliable native providers on Android
      http://dislab.hufs.ac.kr/wiki/Android/Native_Providers
    3. ...
  4. ...

Referenct:
http://www.blogjava.net/easywu/archive/2010/02/19/313417.html

 

分享到:
评论

相关推荐

    智能变电站报文解析工具mms_ethereal,附报文分析,使用方法

    对于智能变电站的MMS报文,Ethereal提供了专门的解码功能,可以解析MMS报文结构,帮助用户理解报文内容,进行故障排查或性能优化。 "SV报文分析.doc"可能包含了关于Sampled Values(采样值)报文的详细分析。SV报文...

    MMS 通讯 协议解析记录

    《MMS通讯协议详解及其在电力行业的应用》 MMS,即Manufacturing Message Specification,是一种在...同时,通过开发Wireshark这样的网络分析工具插件,能够更直观地解析MMS通信过程,进一步优化系统性能和稳定性。

    mms以太网报文可用wireshark打开

    mms协议以太网报文,可以用wireshark软件打开,适用于学习mms报文解析,学习各种工业以太网协议可参考本人其他下载文件

    32如何让Wireshark支持61850 MMS报文解析

    32如何让Wireshark支持61850 MMS报文解析

    IEC61850 MMS协议解析

    IEC61850 MMS 协议解析 IEC61850 MMS 协议是一种用于电力系统自动化领域的通用标准,旨在实现不同制造设备之间的互操作。MMS(Manufacturing Message Specification)是一种制造报文规范,用于在设备或程序之间传送...

    parse-mms-samples.rar_MMS_MMS协议_completelyceq_mms file parse_mms

    “实例分析mms.doc”可能是一个文档,详尽解释了MMS协议的工作原理、消息结构以及如何解析MMS文件。通常,这样的文档会涵盖以下知识点: 1. **MMS协议基础**:介绍MMS协议的基本概念,包括协议的层次结构、组成部分...

    MMS与ASN.1编码规则

    本文旨在帮助初学者快速入门MMS及其编码机制,并通过具体的例子来解释如何解析MMS PDU(协议数据单元)。以下内容将详细介绍ASN.1编码规则、MMS协议的基本概念,以及一些常见的MMS服务示例。 #### ASN.1概述 ASN.1...

    android4.0.4 MMS原生代码

    Mms类主要用于构建和解析MMS消息。它包含了对MMS协议的理解,如WAP Push(Wireless Application Protocol Push)技术,用于传递MMS通知到手机。Mms类的解析方法能够将接收到的二进制数据转化为可读的MMS消息对象。 ...

    windows系统下的mms流媒体下载函数

    首先,libmms是一个跨平台的库,用于解析和接收MMS、MMST和MMSH协议的数据流。它提供了API接口,允许开发者构建自定义的流媒体客户端,实现流媒体的播放和下载。这个库支持多种操作系统,包括Windows、Linux和Mac OS...

    MMS_sender1.zip_Application send MMS_MMS_send mms with java

    2. **FReader.java**:此文件可能是用来读取或解析MMS数据的类,例如读取接收到的MMS消息内容,或者从本地存储中读取用户要发送的多媒体文件。 3. **MMS.java**:这是核心的MMS服务类,可能包含了处理MMS消息的逻辑...

    mms.rar_MMS_MMS c++

    1. **消息解析模块**:C++可以高效地处理MIME格式,解析MMS头部和消息体,提取出关键信息。 2. **网络通信模块**:C++支持多种网络库,如libcurl、Poco等,用于建立和维护与移动设备的连接,收发MMS数据。 3. **媒体...

    MMS.rar_MMS_mms协议文档

    本文将通过解析MMS的相关协议文档,为你揭开其工作原理和技术细节。 1. **MMS架构与协议栈** MMS协议基于WAP(Wireless Application Protocol)框架,其架构主要包括彩信中心(MMSC)、客户端(MMS User Agent)...

    MMS.rar_MMS_mms symbian_symbian_symbian MMs

    开发者需要理解这些规则以正确构建和解析MMS消息。 4. **数据库管理**:MMS消息通常需要存储在本地数据库中,以便用户查看和管理。Symbian提供了RDBMS(关系型数据库管理系统)支持,如Series 60平台上的MMS数据库...

    mms_ethereal_install_v120.rar

    5. 解析MMS服务:Ethereal会解析MMS帧中的服务类型,如“Read”、“Write”、“Report”等,并显示对应的参数和值。 6. 导出和保存:对于重要的数据包,可以选择导出为文本或XML格式,便于后续分析或与其他工具共享...

    61850-MMS easlite参考手册

    在MMS-EASE Lite中,Expat可能被用于解析MMS消息中的XML内容,这是IEC 61850标准中对信息交换格式的要求之一。 Windows批处理文件(Batch File)是文档中提到的另一个重要的内容,它允许开发者通过编写自动化脚本来...

    MMS.rar_MMSExample_mms engine_mms-lib

    这个例子通常包含了创建、发送和接收MMS消息的基本流程,可能包括解析MMS头部信息、编码和解码多媒体内容、处理网络传输等环节。通过阅读和运行这个示例,开发者能够快速掌握MMS引擎的基本用法,并且了解在不同场景...

    wap协议包(针对MMS)

    - **消息格式**:需要熟悉如何根据MIME标准构造和解析MMS消息。 - **连接管理**:掌握如何使用WAP协议栈建立和维护到MMS服务器的连接。 - **安全性**:了解WTLS如何提供加密和认证,确保数据安全。 - **错误处理**:...

    mms_ethereal_v120

    《深入解析MMS与Ethereal在iec61850协议分析中的应用》 MMS(Manufacturing Message Specification)和Ethereal是电力自动化领域中进行数据通信和网络分析的重要工具。MMS协议,源自IEC61850标准,是用于智能电网...

    android mms模块

    5. `PduBuilders`和`Pduparsers`:构建和解析MMS PDU消息的工具类。 五、系统定制与优化 在系统定制中,可能需要针对特定需求对MMS模块进行调整,例如: 1. 自定义MMS设置:修改默认的MMSC URL、端口或代理设置。 2...

    MMS.zip_MMS android_android mms_site:www.pudn.com_短信 android

    通过对这些源码的学习,开发者可以深入理解MMS的实现细节,包括如何创建和解析MMS消息、如何与服务器交互以及如何在UI上展示MMS内容。 7. **Pudn.com**:提及的"Pudn.com"是一个分享技术文档和源码的网站,可能在这...

Global site tag (gtag.js) - Google Analytics