推荐安卓开发神器(里面有各种UI特效和android代码库实例)
- 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 - 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" /> - Others
- About what tables are created in mmssms.db
- adb pull /data/data/com.google.providers.telephony/databases/mmssms.db .
- strings mmssms.db > tmp.txt
- vi tmp.txt, and search 'CREATE TABLE'
- All avaliable native providers on Android
http://dislab.hufs.ac.kr/wiki/Android/Native_Providers - ...
- About what tables are created in mmssms.db
- ...
Referenct:
http://www.blogjava.net/easywu/archive/2010/02/19/313417.html
相关推荐
对于智能变电站的MMS报文,Ethereal提供了专门的解码功能,可以解析MMS报文结构,帮助用户理解报文内容,进行故障排查或性能优化。 "SV报文分析.doc"可能包含了关于Sampled Values(采样值)报文的详细分析。SV报文...
《MMS通讯协议详解及其在电力行业的应用》 MMS,即Manufacturing Message Specification,是一种在...同时,通过开发Wireshark这样的网络分析工具插件,能够更直观地解析MMS通信过程,进一步优化系统性能和稳定性。
mms协议以太网报文,可以用wireshark软件打开,适用于学习mms报文解析,学习各种工业以太网协议可参考本人其他下载文件
32如何让Wireshark支持61850 MMS报文解析
IEC61850 MMS 协议解析 IEC61850 MMS 协议是一种用于电力系统自动化领域的通用标准,旨在实现不同制造设备之间的互操作。MMS(Manufacturing Message Specification)是一种制造报文规范,用于在设备或程序之间传送...
“实例分析mms.doc”可能是一个文档,详尽解释了MMS协议的工作原理、消息结构以及如何解析MMS文件。通常,这样的文档会涵盖以下知识点: 1. **MMS协议基础**:介绍MMS协议的基本概念,包括协议的层次结构、组成部分...
本文旨在帮助初学者快速入门MMS及其编码机制,并通过具体的例子来解释如何解析MMS PDU(协议数据单元)。以下内容将详细介绍ASN.1编码规则、MMS协议的基本概念,以及一些常见的MMS服务示例。 #### ASN.1概述 ASN.1...
Mms类主要用于构建和解析MMS消息。它包含了对MMS协议的理解,如WAP Push(Wireless Application Protocol Push)技术,用于传递MMS通知到手机。Mms类的解析方法能够将接收到的二进制数据转化为可读的MMS消息对象。 ...
首先,libmms是一个跨平台的库,用于解析和接收MMS、MMST和MMSH协议的数据流。它提供了API接口,允许开发者构建自定义的流媒体客户端,实现流媒体的播放和下载。这个库支持多种操作系统,包括Windows、Linux和Mac OS...
2. **FReader.java**:此文件可能是用来读取或解析MMS数据的类,例如读取接收到的MMS消息内容,或者从本地存储中读取用户要发送的多媒体文件。 3. **MMS.java**:这是核心的MMS服务类,可能包含了处理MMS消息的逻辑...
1. **消息解析模块**:C++可以高效地处理MIME格式,解析MMS头部和消息体,提取出关键信息。 2. **网络通信模块**:C++支持多种网络库,如libcurl、Poco等,用于建立和维护与移动设备的连接,收发MMS数据。 3. **媒体...
本文将通过解析MMS的相关协议文档,为你揭开其工作原理和技术细节。 1. **MMS架构与协议栈** MMS协议基于WAP(Wireless Application Protocol)框架,其架构主要包括彩信中心(MMSC)、客户端(MMS User Agent)...
开发者需要理解这些规则以正确构建和解析MMS消息。 4. **数据库管理**:MMS消息通常需要存储在本地数据库中,以便用户查看和管理。Symbian提供了RDBMS(关系型数据库管理系统)支持,如Series 60平台上的MMS数据库...
5. 解析MMS服务:Ethereal会解析MMS帧中的服务类型,如“Read”、“Write”、“Report”等,并显示对应的参数和值。 6. 导出和保存:对于重要的数据包,可以选择导出为文本或XML格式,便于后续分析或与其他工具共享...
在MMS-EASE Lite中,Expat可能被用于解析MMS消息中的XML内容,这是IEC 61850标准中对信息交换格式的要求之一。 Windows批处理文件(Batch File)是文档中提到的另一个重要的内容,它允许开发者通过编写自动化脚本来...
这个例子通常包含了创建、发送和接收MMS消息的基本流程,可能包括解析MMS头部信息、编码和解码多媒体内容、处理网络传输等环节。通过阅读和运行这个示例,开发者能够快速掌握MMS引擎的基本用法,并且了解在不同场景...
- **消息格式**:需要熟悉如何根据MIME标准构造和解析MMS消息。 - **连接管理**:掌握如何使用WAP协议栈建立和维护到MMS服务器的连接。 - **安全性**:了解WTLS如何提供加密和认证,确保数据安全。 - **错误处理**:...
《深入解析MMS与Ethereal在iec61850协议分析中的应用》 MMS(Manufacturing Message Specification)和Ethereal是电力自动化领域中进行数据通信和网络分析的重要工具。MMS协议,源自IEC61850标准,是用于智能电网...
5. `PduBuilders`和`Pduparsers`:构建和解析MMS PDU消息的工具类。 五、系统定制与优化 在系统定制中,可能需要针对特定需求对MMS模块进行调整,例如: 1. 自定义MMS设置:修改默认的MMSC URL、端口或代理设置。 2...
通过对这些源码的学习,开发者可以深入理解MMS的实现细节,包括如何创建和解析MMS消息、如何与服务器交互以及如何在UI上展示MMS内容。 7. **Pudn.com**:提及的"Pudn.com"是一个分享技术文档和源码的网站,可能在这...