2012-01-09 67 views
-2

我對發送的所有短信一ContentObserver的接收者/接收,當發送短信,這是我從光標獲取數據:在手機上如何獲得傳出短信

01-09 09:52:13.523: I/WOWOW(1830): _id: 213 
01-09 09:52:13.523: I/WOWOW(1830): thread_id: 1 
01-09 09:52:13.523: I/WOWOW(1830): address: null 
01-09 09:52:13.523: I/WOWOW(1830): person: null 
01-09 09:52:13.523: I/WOWOW(1830): date: 1326120733305 
01-09 09:52:13.523: I/WOWOW(1830): date_sent: 0 
01-09 09:52:13.523: I/WOWOW(1830): protocol: null 
01-09 09:52:13.527: I/WOWOW(1830): read: 1 
01-09 09:52:13.527: I/WOWOW(1830): status: -1 
01-09 09:52:13.527: I/WOWOW(1830): type: 3 
01-09 09:52:13.527: I/WOWOW(1830): reply_path_present: null 
01-09 09:52:13.527: I/WOWOW(1830): subject: null 
01-09 09:52:13.527: I/WOWOW(1830): body: Hello i am testing 
01-09 09:52:13.527: I/WOWOW(1830): service_center: null 
01-09 09:52:13.527: I/WOWOW(1830): locked: 0 
01-09 09:52:13.527: I/WOWOW(1830): error_code: 0 
01-09 09:52:13.527: I/WOWOW(1830): seen: 0 

現在,從這些數據中我可以得到短信的消息,它發送的時間,但我不明白我將如何獲取收件人。有人可以幫助我嗎?謝謝!

回答

1

對此的解決方案,對任何確實支持content:// sms的電話(不太確定哪一個不這樣做,但大部分都是這樣),是檢查「address」是否爲空,如果它不是空的,也檢查消息的最後選中的「_id」是否不同,因爲content:// sms有時會給你同樣的消息3-4次,並且只有其中一個具有「address」作爲真實值而不是null。這裏是我在我的ContentObserver onChange中的最終代碼:

Cursor cur = contentResolver.query(Uri.parse("content://sms"), null, null, null, null); 
    cur.moveToNext(); 
    String id = cur.getString(cur.getColumnIndex("_id")); 

    final String user_id = settings.getString("user_id", "0"); 

    if(!cur.getString(cur.getColumnIndex("address")).equals("null") && !id.equals(lastId)) { 
     for(int i =0; i < cur.getColumnNames().length; i++) { 
      Log.i("WOWOW", cur.getColumnName(i) + ": " + cur.getString(cur.getColumnIndex(cur.getColumnName(i)))); 
     } 
     Log.i("WOWOW", "*****************************************************"); 
     lastId = id; 
    } 
+0

爲了記錄,lastId是一個公共全局變量,啓動時等於「」。 – Qasim 2012-01-10 21:30:32

1

這個問題已經回答here。 (爲了方便複製)。

「content:// sms /」沒有正式記錄,它的實現取決於設備製造商。有沒有乾淨的方式來檢索任何短信相關的信息。

+0

它是如何被downvoted?由於重複或?因爲我認爲它是一個涉及深入挖掘的好問題。線程ID究竟是什麼? – Qasim 2012-01-09 21:42:21

+0

完成一些測試後,thread_id對於您發送消息的每個聯繫人都是唯一的。我會繼續尋找解決方案。 – Qasim 2012-01-09 21:45:14

+0

經過更多測試後,我現在意識到「地址」字段有時爲空,並且大部分時間實際上都包含一個地址。當您從手機發送傳出短信時,地址就是短信的收件人。現在,我認爲這是因爲當SMS被放入:// sms中時,出於某種奇怪的原因它被放入多次,也許只有最後一次包含正確的信息。我會做更多的測試,這個問題將INDEED得到答案,你有我的話。 – Qasim 2012-01-09 21:50:15