android学习札记(十一)
android学习笔记(十一)
用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";