Андроид-контакт подозрительно похож на vcard, поэтому я подозреваю, что они используют виртуальные карты внутри.
Я думаю, что это намного сложнее, чем использование «виртуальных карточек внутри», особенно потому, что vCard - это просто формат текстового файла, что делает его неэффективным для хранения и тем более для поиска большого количества из них.
Обзоре ContactsContract (заметьте, я вырезал его на месте он упоминает «трехуровневой модели данных») ...
Обзор
ContactsContract определяет расширяемую базу данных контактно связанная информация. Контактная информация хранится в трехуровневой модели данных:
Насколько я могу судить, существует способ «извлечь» визитную карточку, относящуюся к отдельному контакту, но я не знаю одного, чтобы создать свяжитесь с визитной карточкой.
EDIT: WRT импортирует vCards при нажатии на ссылку в браузере - да, хорошая точка. Я могу подтвердить, что он работает при получении vCard по Bluetooth хотя бы (что, конечно, вполне логично). Если я «открываю» vCard на своем телефоне, я получаю «выбор», спрашивающий меня, хочу ли я использовать «Редактор файлов» или «Люди» (приложение для контактов HTC - не уверен, называется ли оно другим на других телефонах). Если есть только одна карточка vCard, она импортируется без дальнейшего запроса. Если их несколько, я получаю еще один выбор, спрашивающий, хочу ли я импортировать One/Multiple/All (Multiple дает другой выбор с флажками, чтобы сделать мой выбор).
В теории, я полагаю, возможно, что у вас есть вся загрузка файлов .vcf, загруженных в каталог где-то, и написать код, который просто создает Intent, чтобы «открыть» один из них и использовать его с startActivity() без указания того, какую деятельность использовать. Я не уверен, какие намерения будут использоваться здесь, но я бы начал с ACTION_VIEW - другие варианты могут быть ACTION_EDIT или (tenuously) ACTION_RUN.
Несмотря на то, что это может работать в известной среде, особенно в одно время, это немного беспорядочно, а поведение/результаты могут отличаться в зависимости от разных телефонов, версий приложений Android и контактов.
EDIT2: WRT, чтобы использовать намерение обрабатывать файлы .vcf, я только пробовал его с моей SD-карты - я понятия не имею, как это сделать, не сохраняя его в первую очередь. Ниже воспроизводит именно то, что я вижу, когда я открываю визитную карточку, который отправляется через Bluetooth ...
Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("file:///mnt/sdcard/downloads/bluetooth/MickeyMouse.vcf"), "text/x-vcard");
startActivity(i);
, очевидно, это происходит, если вы щелкнете по файлу .vcf в файловом браузере, например. –
@ farble1670: Я собирался ответить как комментарий, но это было слишком долго. См. Точку после EDIT: в моем ответе. – Squonk
спасибо за ваш ответ. похоже, что это стоит того. не могли бы вы представить, как будет выглядеть это намерение? я не совсем понимаю, как бы я указал на намерение в файле. –