2011-07-11 24 views
0

我正在構建一個應用程序,我需要用戶選擇一些「最喜歡的」聯繫人和電話號碼。我可以選擇一個聯繫人使用使用外鍵和ContactsContract

startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI), PICK_CONTACT_REQUEST); 

我能夠提取所有我需要的信息。

然後我繼續將聯繫人的_id保存到我自己的數據庫中。我的計劃是稍後列出所有「收藏」聯繫人並在列表視圖中顯示姓名和電話號碼。

我想保存聯繫人ID而不是姓名和號碼,這樣我的listview就會反映用戶對他或她的聯繫人所做的任何更改。

但現在我卡住了。我不知道如何將我的表格與聯繫人ID轉換爲具有聯繫人姓名的表格。

,我想這樣的事情

my_table LEFT OUTER JOIN contacts_table ON (my_table.contact_id = contacts_table._id) 

回答

0

,你會想在這裏做的是保存這些ID,然後當你想拉從用戶的地址簿中的名字,你就必須跨越爲了將它們過濾出來,請參考您存儲的聯繫人的ID。

基本上你不能加入一個不存在的表(contacts_table)。

+0

猜猜我的一個數據庫和內容提供者的aproach是有點矯枉過正,我試圖達到,但我想這樣做,以更好地瞭解如何使用它們... – getekha

+0

數據庫是好的,當您嘗試加入數據庫上的contentprovider時會出現問題。這不可能。儘管如此,你可以創建一個輔助類來爲你交叉引用。 –

0

不管您希望如何,您都可以保存相應的ID,然後循環查看聯繫人ID,然後逐個查找聯繫人以提取所需的數據。如果速度足夠快,則不需要任何SQL連接(「按需優化」)。

也許它甚至可以更快地使用一些Google API並使用HTTP/XML來獲取聯繫人(也許可以緩存一段時間)。