android簡訊資料庫
⑴ android開發 接收簡訊時在哪個文件寫入資料庫
data文件加下,具體:/data/data/com.android.providers.telephony/dababases/mmssms.db
⑵ 安卓手機簡訊的db格式的資料庫怎麼恢復
安卓手機的簡訊刪除後,會依然保存於db資料庫文件中,該文件一般位於手機本向,文件名為mmssms.db,如果刪除單條簡訊,可以基於該DB資料庫文件進行恢復,但是如果刪除過去時間過久,新的數據可能會覆蓋刪除過的簡訊,造成無法恢復,所以,在刪除記錄後,要及時復制出該文件,及時恢復
⑶ android怎樣實現用代碼從資料庫獲取簡訊內容等等
資料庫獲取代碼如下:
String databaseFilename = DATABASE_PATH + "/" + DATABASE_NAME;
File dir = new File(DATABASE_PATH);
if (!dir.exists())
dir.mkdir();
if (!(new File(databaseFilename)).exists()) {
InputStream is = context.getResources().openRawResource(R.raw.jobexam);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
db = sqliteDatabase.openOrCreateDatabase(databaseFilename, null);
⑷ 安卓手機簡訊存儲位置
安卓手機簡訊存儲位置在系統文件夾system/sms
要看到這個文件夾 你需要對手機的ROOT 也就是超級許可權打開才行
⑸ android怎樣讀取sms資料庫指定欄位的數據
Android APK操作簡訊數據時,不能使用SQLHelper直接操作,需要使用協議,協議使用Uri轉義
content://sms/inbox 收件箱
content://sms/sent 已發送
content://sms/draft 草稿
content://sms/outbox 發件中
content://sms/failed 失敗
content://sms/queued 待發送
資料庫中sms相關的欄位如下:
_id primary key integer 與words表內的source_id關聯
thread_id 會話id,一個聯系人的會話一個id,與threads表內的_id關聯 integer
address 對方號碼 text
person 聯系人id integer
date 發件日期 integer
protocol 通信協議,判斷是簡訊還是彩信 integer 0:SMS_RPOTO, 1:MMS_PROTO
read 是否閱讀 integer default 0 0:未讀, 1:已讀
status 狀態 integer default-1 -1:接收,
0:complete,
64: pending,
128: failed
type 簡訊類型 integer 1:inbox
2:sent
3:draft56
4:outbox
5:failed
6:queued
body 內容
service_center 服務中心號碼
subject 主題
reply_path_present
locked
error_code
seen
具體使用方法:
Cursor cursor = mContentResolver.query(Uri.parse("content://sms"), String[] projection, String selection, String[] selectionArgs,String sortOrder);
if(cursor!=null)
if(cursor.moveToFirst())
{String address = cursor .getString(draftCursor.getColumnIndexOrThrow("address"));}
query轉義sql語句時將query函數中的參數轉義為
select projection[] from sms where selection[] = selectionArgs[] order by sortOrder
由於Android2.2 Messaging中存儲草稿簡訊時不會將address存入sms表中,而以thread_id為索引,將草稿簡訊的address存入canonical_addresses表中而導致僅根據協議無法查詢到draft msgs address(這種設計缺陷是因為Android為了使UI更加效率而使draft msgs不同於其他類型的msgs存儲方式所導致的),那麼根據這樣的轉義方式我們可以擴展一下這種select語句使他可以查詢到sms表以外的東西:
Cursor draftCursor = mResolver.query(Uri.parse("content://sms"),
new String[] {"canonical_addresses.address " +
"from sms,threads,canonical_addresses " +
"where sms.thread_id=threads._id and threads.recipient_ids=canonical_addresses._id and sms._id ='" +
String.valueOf(target_message_id) + "' --"},
null, null, null);
有點耍滑頭,是吧,用到了sql語句中注釋符號「--」
這樣我們就將這個語句轉化為了:
select canonical_addresses.address from sms,threads,canonical_addresses where sms.thread_id=threads._id and threads.recipient_ids=canonical_addresses._id and sms._id = 'target_message_id' -- from sms
在sql語句解析的時候,--from sms是不予解析的,所以就成功執行了前面的聯合查詢操作而得到了我們想要的canonical_addresses表中的address數據。
⑹ android 平台資料庫表與uri對應關系看不明白,請高人指點
android的聯系人資料庫是一個三層架構,raw_contacts表,contacts表,data表合起來,才能完整的表示一個聯系人的所有信息。那為什麼不直接設計一張contacts表示所有聯系人呢?理由是,聯系人的數據是易變的,而且數據種類繁多。打個比方,你可以隨意的把兩個聯系人合並在一起,也可以隨意的為一個聯系人增加新的信息(如家庭地址,郵件地址,昵稱,頭像等等),把所有信息合並放在一張表裡明顯是不可能的。資料庫設計時考慮的可擴展,可維護。
由於android底層的資料庫很復雜,開發者想得到一個聯系人的信息時,經常需要訪問3-4張的表才能獲取到完整數據,這個過程是很復雜很繁瑣的。好在開發時你不用關注這些,因為android幫你把這些已經封裝好了,你能看到也就是ContactsContract這個類裡面抽象好了的映射。事實上,ContactsContract這個類是根據功能進行抽象的,和底層實現完全沒有任何關系。他們之間通過某個ContentProvider連系起來,當你請求content://com.android.contacts/contacts這個欄位時,會調用ContentProvider,ContentProvider根據你的uri生成查詢不同的表的sql語句,然後把查詢結果返回給你。
結果表現就是,你在ContactsContract這個類看到某些欄位在對應的表裡找不到,因為這個欄位被放到其他的表裡面去了。
⑺ 怎樣取得android簡訊資料庫中發件人收件人的名字
你得到攔截簡訊的文本信息了么?得到了就可以存到sqllite資料庫里,你要只是不會怎麼朝sqllite裡面存的話再問我吧,要是不是我這個意思就算了
⑻ android 群發簡訊時怎麼將數據插入到資料庫中 怎麼與非群發區分呢
Threads.getOrCreateThreadId(this, address) 群發傳入的address為 set<String>類型。