Android: How to save contacts to sdcard as vCard. Without duplicates?

后端 未结 2 1773
栀梦
栀梦 2021-01-21 05:31

I am trying to save all of the contacts on a phone to the sdcard as a .vcf file (vCard). It works, but I have a problem. Every contact that has more than one phone number (a mo

相关标签:
2条回答
  • 2021-01-21 06:06

    Use below code for Save contact data as a vcf file into device sdcard.

    public class VCardActivity extends Activity {
        Cursor cursor;
        ArrayList<String> vCard;
        String vfile;
        static Context mContext;
    
        /** Called when the activity is first created. */
        @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                mContext = VCardActivity.this;
                getVCF();
            }
    
            public static void getVCF() {
                final String vfile = "Contacts.vcf";
                Cursor phones = mContext.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 = mContext.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();
                        Log.d("Vcard", VCard);
                    } catch (Exception e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }
            }
        }
    

    and see below link for more information.

    Export Contacts as a VCF file

    and give below permission into your androidmanifest.xml file.

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
    0 讨论(0)
  • 2021-01-21 06:15

    Check duplicity for lookupKey...

    0 讨论(0)
提交回复
热议问题