2014-01-23 74 views
2

好的,我要去巴蒂爾。 我一直在搞這一點。一旦你知道contact_id這麼簡單,不應該刪除一個聯繫人嗎?此刪除運行,不會引發錯誤,但不會刪除聯繫人。刪除Android聯繫人的單個聯繫人

的日誌信息顯示是這樣的:

delete contact_id = '615' 
delete return code : 0 

這就涉及到代碼:

private static int deleteContact(Context c, String id) { 

    String where = ContactsContract.Data.CONTACT_ID + " = '" + id + "'"; 
    int rc = -1; 
    try { 
     Log.i("delete", where); 
     rc = c.getContentResolver().delete(ContactsContract.Contacts.CONTENT_URI, where, null); 
     Log.i("delete",String.format("return code : %d", rc)); 
    } catch (Exception e) { 
     System.out.println(e.getStackTrace()); 
    } 

    return rc; 
} 

有人可以幫助我找到一個解決方案或建議的方法嗎?

+0

首先,你確定與這個ID的聯繫存在嗎?第二,更好的選擇是使用'c.getContentResolver()。delete(ContactsContract.Contacts.CONTENT_URI,ContactsContract.Data.CONTACT_ID +「=?」,new String [] {id});' – Selvin

+1

你有沒有試過找到的方法在http://stackoverflow.com/questions/527216/how-to-remove-a-contact-programmatically-in-android? –

+0

第一個答案是...是的。我確定這個ID存在。我(愚蠢的我)選擇同步Outlook和Google地址簿。我希望有一個相當聰明的同步,但不是那麼多。因此我有一些嘟嘟聲。我使用的代碼循環檢查AccountType的聯繫人...如果它是谷歌,它保持,它的前景ID傳遞給我的小函數被刪除。我從SO#527216中的代碼開始,將其清理到我所擁有的。我確實從開始建議( – mcmprch

回答

-1

那麼,我回去重訪問題/ 527216/...如果它沒有爲我工作的話,我會感到厭煩。我不知道我在整天做錯了......但有幾個小時的休息時間,一些複製/粘貼和這個函數刪除單個聯繫人對我來說:

private static int deleteContact(Context c, String lookupKey) { 
    int rc = 0; 
    ContentResolver cr = c.getContentResolver(); 
    try { 
     Uri uri = Uri.withAppendedPath(
       ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey); 
     rc = cr.delete(uri, null, null); 
    } catch (Exception e) { 
     System.out.println(e.getStackTrace()); 
    } 

    return rc; 
} 

感謝您的答案!

+0

所有聯繫人都被刪除 –