Android: Cómo guardar contactos en sdcard como vCard. ¿Sin duplicados?

Estoy intentando guardar todos los contactos de un teléfono en la tarjeta sd como un archivo .vcf (vCard). Funciona, pero tengo un problema. Cada contacto que tiene más de un número de teléfono (un teléfono móvil y un número de trabajo) se guarda dos veces. Y ambos números están en cada contacto duplicado, por lo que son correctos, simplemente duplicados. ¿Alguien puede decirme cómo solucionar este problema? Mi código es:

File delete=new File(Environment.getExternalStorageDirectory()+"/Contacts.vcf");

     if (delete.exists()) {
       delete.delete();

     }

    Cursor phones = ContactService.this.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null, null, null);
    phones.moveToFirst();
      for(int i =0;i<phones.getCount();i++)
      {
         String lookupKey =  phones.getString(phones.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
        Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey);


       AssetFileDescriptor fd;
        try 
        {
            fd = ContactService.this.getContentResolver().openAssetFileDescriptor(uri, "r");
            FileInputStream fis = fd.createInputStream();
            byte[] buf = new byte[(int) fd.getDeclaredLength()];
            fis.read(buf);
            String VCard = new String(buf);
            String path = Environment.getExternalStorageDirectory().toString() + File.separator + vfile;
            FileOutputStream mFileOutputStream = new FileOutputStream(path, true);
                       mFileOutputStream.write(VCard.toString().getBytes());           
            phones.moveToNext();             
        } 
        catch (Exception e1) 
        {
             // TODO Auto-generated catch block
             e1.printStackTrace();
        }


      }

Gracias por tu ayuda.

Respuestas a la pregunta(2)

Su respuesta a la pregunta