Android SMS Read
AndroidManifest.xml 權(quán)限
記得在AndroidManifest.xml中加入android.permission.READ_SMS這個(gè)permission
<uses-permission android:name="android.permission.READ_SMS" />
運(yùn)行結(jié)果:
URI主要有:
content://sms/ 所有短信
content://sms/inbox 收件箱
content://sms/sent 已發(fā)送
content://sms/draft 草稿
content://sms/outbox 發(fā)件箱
content://sms/failed 發(fā)送失敗
content://sms/queued 待發(fā)送列表
- _id => 短消息序號(hào) 如100
- thread_id => 對(duì)話(huà)的序號(hào) 如100
- address => 發(fā)件人地址,手機(jī)號(hào).如+8613811810000
- person => 發(fā)件人,返回一個(gè)數(shù)字就是聯(lián)系人列表里的序號(hào),陌生人為null
- date => 日期 long型。如1256539465022
- protocol => 協(xié)議 0 SMS_RPOTO, 1 MMS_PROTO
- read => 是否閱讀 0未讀, 1已讀
- status => 狀態(tài) -1接收,0 complete, 64 pending, 128 failed
- type => 類(lèi)型 1是接收到的,2是已發(fā)出
- body => 短消息內(nèi)容
- service_center => 短信服務(wù)中心號(hào)碼編號(hào)。如+8613800755500
Cursor cursor = getContentResolver().query(uri, projection, "where .." new String[]{"", ""}, "order by ..")
Android短信存儲(chǔ)數(shù)據(jù)庫(kù)
偶然發(fā)現(xiàn)了Android源碼中的一個(gè)類(lèi)MmsSmsDatabaseHelper.java,原來(lái)android將所有的短信信息都存入了mmssms.db中。
公開(kāi)的SDK中沒(méi)有這個(gè)類(lèi),不能直接使用。于是自己寫(xiě)了一個(gè)SQLiteOpenHelper,但是查詢(xún)的時(shí)候發(fā)生SQL異常。看來(lái)不能為所欲為了,不過(guò)據(jù)網(wǎng)上資料介紹可以拷貝db文件來(lái)實(shí)現(xiàn)短信數(shù)據(jù)備份。
MmsSmsDatabaseHelper.java在Android源碼中的路徑:
packages/providers/TelephonyProvider/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
sms數(shù)據(jù)庫(kù)中的字段如下:
_id 一個(gè)自增字段,從1開(kāi)始
thread_id 序號(hào),同一發(fā)信人的id相同
address 發(fā)件人手機(jī)號(hào)碼
person 聯(lián)系人列表里的序號(hào),陌生人為null
date 發(fā)件日期
protocol 協(xié)議,分為: 0 SMS_RPOTO, 1 MMS_PROTO
read 是否閱讀 0未讀, 1已讀
status 狀態(tài) -1接收,0 complete, 64 pending, 128 failed
type
ALL = 0;
INBOX = 1;
SENT = 2;
DRAFT = 3;
OUTBOX = 4;
FAILED = 5;
QUEUED = 6;
body 短信內(nèi)容
service_center 短信服務(wù)中心號(hào)碼編號(hào)
subject 短信的主題
reply_path_present TP-Reply-Path
locked
sms數(shù)據(jù)庫(kù)表字段類(lèi)型的源碼:
packages/providers/TelephonyProvider/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
聯(lián)系人為空
短信數(shù)據(jù)庫(kù)里面如果你是先受到陌生短信之后再把陌生人添加到聯(lián)系人列表的話(huà),短信數(shù)據(jù)庫(kù)里面的person字段就為null,如果你是先添加聯(lián)系人再發(fā)短信的話(huà),短信數(shù)據(jù)庫(kù)里面的person字段就不為空了,所以你要是想通過(guò)短信數(shù)據(jù)庫(kù)里的字段取得聯(lián)系人的其他信息的話(huà),只能通過(guò)地址來(lái)取。
參考推薦: