2010-12-02 7 views

Répondre

3

Pour supprimer l'élément de contenu d'Android dont vous avez besoin d'un contenu URI et certains critères de suppression.

Chaque type de contenu a son propre URI de contenu. Si vous écrivez votre adaptateur de synchronisation de contacts, vous pouvez utiliser ContactsContract.RawContacts.CONTENT_URI.

Autre chose dont vous avez besoin est ContentResolver - une interface pour communiquer avec un fournisseur de contenu (une opération, telle que l'insertion, la mise à jour et la suppression sont définies dans cette interface). Vous pouvez obtenir ContentResolver en appelant getContentResolver à partir de votre contexte d'application.

Donc, voici l'extrait de code qui devrait supprimer tous les contacts (pas testé si):

ContentCesolver cr = getContentResolver(); 
URI uri = RawContacts.CONTENT_URI; 
cr.delete(uri, null, null); 

Notez que lorsque vous utilisez RawContacts.CONTENT_URI, l'élément de contact n'est pas supprimé. Au lieu de cela, il est seulement marqué pour la suppression. Pour supprimer complètement, vous devez ajouter un paramètre ContactsContract.CALLER_IS_SYNCADAPTER à votre URI:

uri.buildUpon() 
    .appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, 
     "true").build() 

Pour plus d'explications lire official docs about content providers.

+0

Afin de supprimer plusieurs contacts spécifiques (compte tenu de leurs clés de contact, par exemple), est-ce correct d'utiliser getContentResolver(). ApplyBatch? Ou devrais-je créer une seule opération de suppression qui est un peu complexe? Quoi de mieux, ou quels sont les avantages et les inconvénients de chacun? –

+0

Désolé, je ne sais pas. – Vanuan