2010-08-15 22 views
1

我正在嘗試爲SMS消息建立一個對話列表。因此,我正在閱讀「content:// sms/conversations」並閱讀每個對話的前幾條消息以查找通信夥伴的電話號碼。使用這些數字,我嘗試從ContactsContract.CommonDataKinds.Phone中檢索contact_id以從聯繫人數據庫中獲取其他人的信息。如何在Android上查詢ContactsContract.CommonDataKinds.Phone?

String[] returnVals = new String[] {ContactsContract.CommonDataKinds.Phone.CONTACT_ID}; 
Cursor pCur = thisContent.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      returnVals, 
      ContactsContract.CommonDataKinds.Phone.DATA1 + " = \"" + phoneNumber + "\"", 
      null, 
      null); 

當我通過這個查詢的結果我看到未發現了一些接觸旋轉,儘管它們被存儲在聯繫人數據庫。例如,一個與我的聯繫人列表中的一個關聯的號碼,位於似乎以破折號存儲的國家。我知道這可能是一個問題,但我從線程中提取的其他數字將按照它們在文本消息中顯示的方式進行存儲,但仍然無法找到。

所以我的問題是:

  1. 這是正確的做法?我錯過了什麼嗎?有沒有更簡單的方法來實現這一目標?
  2. 我將從ContactsContract.CommonDataKinds.Phone取回的內容是對聯繫人的_ID的引用。我想我無法像正確的長型_ID那樣處理,但我該怎麼做?
  3. 除了SDK的文檔之外,還有關於Android中SMS處理的教程嗎?

回答

2

你應該看看推薦ContactsContract.PhoneLookup提供商

表示仰視的電話號碼,例如呼叫者ID結果的表。要執行查找,您必須在CONTENT_FILTER_URI中追加想要查找的號碼。這個查詢是高度優化的。

Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)); 
resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME,... 
+0

能否提供完整的例子 – 2016-03-21 23:29:36