2010-06-17 95 views
2

我一直在使用Android聯繫人。我可以向他們展示,更新但是當我想刪除任何時候,它不會被完全刪除。在聯繫人 應用程序顯示爲(未知),沒有任何數據。這裏是我的例子:未能使用ContentProviderOperation刪除整個聯繫人

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
ops.add(ContentProviderOperation.newDelete(Data.CONTENT_URI) 
.withSelection(Data.CONTACT_ID + "=?", new String[]{selectedid}) 
.build()); 
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 

我應該做其他什麼來完全刪除聯繫? 似乎這些代碼刪除表ContactsContract.Data中的信息,但它不會刪除表ContactsContract.Contacts或ContactsContract.RawContacts.how中相關的元素我可以做到完全刪除一個聯繫人嗎?

============================================== ==============================

此外,我嘗試了不推薦使用的方法。它的工作,但我不想這樣做。下面是示例代碼:

ContentResolver contentResolver = m_cContent.getContentResolver(); 
contentResolver.delete(People.CONTENT_URI, People.NAME + "=?", new String[] { SelectedName }); 

,如果我修改此代碼以

ContentResolver contentResolver = m_cContent.getContentResolver(); 
contentResolver.delete(ContactsContract.Contacts, ContactsContract.Contacts._ID + "=?", new String[] { Selectedid }); 

它沒有任何效果。

這是否意味着只能通過名稱而不是通過其ID來刪除聯繫人? 我可以做些什麼來刪除聯繫人?

感謝, Enchor

+0

您必須運行同步過程,以便通過Google通訊錄進行更新,而不會永久刪除。檢查已刪除的標誌。 – Pentium10 2010-06-17 05:57:37

+0

「你必須運行一個同步過程」 我不知道該怎麼做。你能告訴我如何運行同步過程嗎? 請告訴我可以閱讀的文檔或給我一些示例代碼。 非常感謝。 – Enchor 2010-06-17 09:37:45

+0

@Enchor你解決了你的問題嗎?我現在正在努力。 – 2014-02-19 08:07:46

回答

0

您正在嘗試通過從Data表中刪除它的數據行刪除接觸。 這是行不通的。

一個聯繫人由多個原始聯繫人組成,每個原始聯繫人的數據保存在Data表中。 刪除聯繫人時,所有原始聯繫人及其數據也會被刪除。

這樣做:

long contactId = 12345; 
Uri contactUri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(contactId)); 
int deleted = getContentResolver().delete(contactUri, null, null); 

刪除將是1,如果操作成功。