Как я могу создать файл .vcf для одного контакта? - PullRequest
0 голосов
/ 19 сентября 2018

Я успешно создал файл .vcf для всех контактов с моего устройства Android.Для этого я указал ссылку ниже:

Экспорт контактов в виде файла VCF

, и он работает довольно хорошо.Но мне нужно преобразовать один контакт в один файл .vcf в соответствии с моим требованием.

В этом текущем коде все контакты получают с использованием следующих строк:

cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);

, а затем все контакты будут покрыты в файле .vcf.

Итак, как это сделатьчто я могу сгенерировать файл .vcf для одного контакта?

1 Ответ

0 голосов
/ 19 сентября 2018

См. Первую строку в блоке кода ниже.Здесь я создаю новый vFile каждый раз, этот метод будет вызываться. Поэтому каждый контакт будет сохранен в разных файлах.

public void get(Cursor cursor)
    {
        vfile = "Contacts" + "_" + System.currentTimeMillis()+".vcf";


        //cursor.moveToFirst();
        String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
        Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey);
        AssetFileDescriptor fd;
        try {
            fd = this.getContentResolver().openAssetFileDescriptor(uri, "r");

            // Your Complex Code and you used function without loop so how can you get all Contacts Vcard.??


           /* 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 out = new FileOutputStream(path);
            out.write(VCard.toString().getBytes());
            Log.d("Vcard",  VCard);*/

            FileInputStream fis = fd.createInputStream();
            byte[] buf = new byte[(int) fd.getDeclaredLength()];
            fis.read(buf);
            String vcardstring= new String(buf);
            vCard.add(vcardstring);

            String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + vfile;
            FileOutputStream mFileOutputStream = new FileOutputStream(storage_path, false);
            mFileOutputStream.write(vcardstring.toString().getBytes());

        } catch (Exception e1) 
        {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
...