2010-08-05 25 views
5

मैं एंड्रॉइड 2.1 संपर्क नियंत्रण पर काम कर रहा हूं, जब मैंने एंड्रॉइड एमुलेटर में खाता (उदाहरण के लिए: जीमेल खाता) सेट नहीं किया था, तो नया संपर्क, लेकिन डीबी पर इस संपर्क को हटा नहीं सका।संपर्क को कैसे हटाएं?

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    String[] args = new String[] {id}; 
    ops.add(ContentProviderOperation.newDelete(Data.CONTENT_URI) 
      .withSelection(Data.CONTACT_ID + "=?", args) 
      .build()); 
    ops.add(ContentProviderOperation.newDelete(RawContacts.CONTENT_URI) 
      .withSelection(RawContacts.CONTACT_ID + "=?", args) 
      .build()); 
    ops.add(ContentProviderOperation.newDelete(Contacts.CONTENT_URI) 
      .withSelection(Contacts._ID + "=?", args) 
      .build()); 

उत्तर

11

RawContacts से संपर्क को हटाने से डेटा, संपर्क तालिका से डेटा हटा दिया जाएगा।

ArrayList ops = new ArrayList(); String[] args = new String[] {id}; 
// if id is raw contact id 
ops.add(ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).withSelection(RawContacts._ID + "=?", args) .build()); 
    OR 
// if id is contact id 
ops.add(ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).withSelection(RawContacts.CONTACT_ID + "=?", args) .build()); 
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
 
+1

प्रिय करण, मैंने कोशिश की थी, हालांकि यह विधि संपर्क को हटा सकती है, इसमें कुछ समस्याएं भी हैं। संपर्कों की जानकारी फ़ाइल "contact2.db" में सहेजी गई है, मैंने इस डीबी फ़ाइल की खोज की है, संपर्क "संपर्क" तालिका में हटा दिया गया है, लेकिन "डेटा" तालिका में हटाया नहीं गया है, क्या आप पूरी तरह से संपर्क हटा सकते हैं? – user408273

0

मैं इस का उपयोग किसी मौजूदा संपर्क से एक फ़ोन नंबर को हटाने के लिए, लेकिन नहीं संपर्क ही:

ArrayList ops = new ArrayList(); 
    String[] args = new String[]{ 
     ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, 
     number, 
     Integer.toString(ContactsContract.CommonDataKinds.Phone.TYPE_MAIN), 
     raw_contact_id 
    }; 
    ops.add(
     ContentProviderOperation.newDelete(ContactsContract.Data.CONTENT_URI) 
      .withSelection(ContactsContract.Data.MIMETYPE + "=? AND " 
       + ContactsContract.CommonDataKinds.Phone.NUMBER + "=? AND " 
       + ContactsContract.CommonDataKinds.Phone.TYPE + "=? AND " 
       + ContactsContract.Data.RAW_CONTACT_ID + "=?" 
       , args) 
      .build()); 

    c.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
2
public static boolean fullDeleteContactByRawId(String rawId) 
{ 
    Uri rawUri = RawContacts.CONTENT_URI.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build(); 
    String where = RawContacts._ID + " = ?"; 
    String[] args = new String[]{rawId}; 

    try 
    { 
     ContentManager.delete(rawUri, where, args); 
    } 
    catch(Exception e) 
    { 
     return false; 
    } 

    return true; 
} 

नोटिस: पूर्ण हटाने के बाद, इस संपर्क सिंक नहीं कर सकते हैं

संबंधित मुद्दे