blog
Tools Guide

Add vCard Contacts on Android: Review or Provider Write

Enable the developer to keep vCard parsing separate from Android contact creation, choose the correct review or provider path.

Published 2026-07-19 · Updated 2026-07-19 · 4 min read

Enable the developer to keep vCard parsing separate from Android contact creation, choose the correct review or provider path.

Validate the VCF as data first

RFC 6350 defines vCard as a contact-data interchange format and allows a long logical content line to be represented as folded physical lines. That makes file validity a separate question from Android contact creation: inspect a representative VCF and its normalized form before mapping fields, so a formatting problem is not mistaken for a Contacts Provider or editor-flow problem. 7 8

Next step: Run a representative VCF with a folded address through the vCard formatter, retain the original beside the normalized result, and note the fields intended for Android mapping. 7 8

  • Use a validator that reports parsing issues and produces normalized output before evaluating Android field mapping. 8
  • Keep folded content in scope during validation because RFC 6350 describes how physical line folds represent one logical content line. 7

Choose the contact-creation path deliberately

Android documents two different creation paths. ContactsContract.Intents.Insert supplies contact data through an intent and lets the user see and edit it before saving. For an app-managed path, the Contacts Provider creates aggregate Contacts in response to a RawContact insertion, so parsed vCard values belong in RawContacts and Data rows rather than a direct Contacts insert. 6 4 5

Next step: Prototype one minimal contact through the chosen path and verify which fields remain visible after Android aggregates the raw contact into a contact. 4 5

  • Use ACTION_INSERT when the intended outcome includes a user review and edit step before any contact is saved. 6
  • Use a RawContacts and Data batch when the app is responsible for field mapping and the resulting contact creation flow. 4 5

Plan permissions and field mapping

An Android contact is not a vCard file: vCard exists for contact-data exchange, whereas Android stores raw contacts and their data rows. Android requires WRITE_CONTACTS for write access and identifies contacts data as personal and sensitive. A useful implementation plan therefore limits field mapping to a known test card and makes the reason for write access explicit. 7 4 5

Next step: Create a field-mapping table for one test VCF, list the intended Android MIME and data rows, then validate consent and write permission before expanding to bulk contact creation. 4 5

What to do next: Validate one representative VCF first, decide whether the flow needs user review or app-managed RawContacts and Data insertion, and design WRITE_CONTACTS consent before moving to bulk contact creation. 8 6 4 5

  • Expect the Intent insert editor to drop supplied values that are not visible in its user interface. 6
  • Explain and request WRITE_CONTACTS only for the workflow that actually writes contacts. 4

Frequently asked questions

Can my app make Android Contacts import multiple VCF files without user interaction?

Android documents an insert intent whose supplied data can be reviewed and edited before saving. For an app-managed flow, the documented data model uses RawContacts plus Data rows and requires WRITE_CONTACTS for write access. The article should guide the decision between those two routes instead of promising an unattended external Contacts-app importer. 6 4 5

What should I check when a folded vCard address disappears on Android?

Start with the VCF representation: RFC 6350 permits long logical lines to be folded into physical lines and describes how that folding is processed. Inspect validation issues and normalized output before testing Android field mapping. This separates a file-format concern from the provider or editor path that creates the Android contact. 7 8 4

If you want to explore support options, book a consultation or learn about related support.

Sources and research

  1. Stack Overflow: Import vCard on Android — Stack Overflow question: Import vCard on Android, accessed 2026-07-19. Retrieved 2026-07-19.
  2. Stack Overflow: Folded vCard address missing on Android — Stack Overflow question: vCard import issue when content is too long on Android, accessed 2026-07-19. Retrieved 2026-07-19.
  3. Stack Overflow: Android vCard string to contact — Stack Overflow question: android vcard string to contact, accessed 2026-07-19. Retrieved 2026-07-19.
  4. Android Developers: Contacts Provider — Android Developers, Contacts Provider documentation, accessed 2026-07-19. Retrieved 2026-07-19.
  5. Android Developers: ContactsContract.RawContacts — Android Developers, ContactsContract.RawContacts reference, accessed 2026-07-19. Retrieved 2026-07-19.
  6. Android Developers: ContactsContract.Intents.Insert — Android Developers, ContactsContract.Intents.Insert reference, accessed 2026-07-19. Retrieved 2026-07-19.
  7. RFC 6350: vCard Format Specification — IETF RFC 6350, vCard Format Specification, accessed 2026-07-19. Retrieved 2026-07-19.
  8. yukt.tools vCard Formatter and Contact Data Validator — yukt.tools vCard Formatter and Contact Data Validator, live page checked 2026-07-19. Retrieved 2026-07-19.
Related tools and guides