用google搜索一下,你就能马上发现关于如何在访问短信数据库的代码。
不过很不幸的是,基本讲的都不是很全。因为只有简单的几行代码。而且几乎都一样。其实,这一块代码是肯定需要进行摸索的。能够达到自己的需求就好。仔细研究过相关的api。至少在2.0之前,android关于短信的api给我的感觉很混乱。
源代码里面,是把所有短信访问的代码全都封装起了,加入了。但是在正式的发布的sdk里面则是没有,取而代之的是android.telephony包下面的代码。不过这个下面的代码其实不能够处理已经收到的短消息。这在应用中,将会是一个很大的软肋。
其实要读取在装应用之前的短信。代码网上可以找到。唯一让人觉得麻烦的其实只是不明白每个字段的意思。和取值。我查了下源代码。把相关字段的取值都取到了。不过有些意思还不是很明白
/**
* The type of the message
* <P>Type: INTEGER</P>
*/
public static final String TYPE = "type";
public static final int MESSAGE_TYPE_ALL = 0;
public static final int MESSAGE_TYPE_INBOX = 1;
public static final int MESSAGE_TYPE_SENT = 2;
public static final int MESSAGE_TYPE_DRAFT = 3;
public static final int MESSAGE_TYPE_OUTBOX = 4;
public static final int MESSAGE_TYPE_FAILED = 5; // for failed outgoing messages
public static final int MESSAGE_TYPE_QUEUED = 6; // for messages to send later
/**
* The thread ID of the message
* <P>Type: INTEGER</P>
*/
public static final String THREAD_ID = "thread_id";
/**
* The address of the other party
* <P>Type: TEXT</P>
*/
public static final String ADDRESS = "address";
/**
* The person ID of the sender
* <P>Type: INTEGER (long)</P>
*/
public static final String PERSON_ID = "person";
/**
* The date the message was sent
* <P>Type: INTEGER (long)</P>
*/
public static final String DATE = "date";
/**
* Has the message been read
* <P>Type: INTEGER (boolean)</P>
*/
public static final String READ = "read";
/**
* The TP-Status value for the message, or -1 if no status has
* been received
*/
public static final String STATUS = "status";
public static final int STATUS_NONE = -1;
public static final int STATUS_COMPLETE = 0;
public static final int STATUS_PENDING = 64;
public static final int STATUS_FAILED = 128;
/**
* The subject of the message, if present
* <P>Type: TEXT</P>
*/
public static final String SUBJECT = "subject";
/**
* The body of the message
* <P>Type: TEXT</P>
*/
public static final String BODY = "body";
/**
* The id of the sender of the conversation, if present
* <P>Type: INTEGER (reference to item in content://contacts/people)</P>
*/
public static final String PERSON = "person";
/**
* The protocol identifier code
* <P>Type: INTEGER</P>
*/
public static final String PROTOCOL = "protocol";
/**
* Whether the <code>TP-Reply-Path</code> bit was set on this message
* <P>Type: BOOLEAN</P>
*/
public static final String REPLY_PATH_PRESENT = "reply_path_present";
/**
* The service center (SC) through which to send the message, if present
* <P>Type: TEXT</P>
*/
public static final String SERVICE_CENTER = "service_center";