Android Vcard строка для контакта - PullRequest
8 голосов
/ 05 января 2011

Мне интересно, есть ли чистый способ импортировать vcard в качестве контакта Android. У меня есть анализатор vcard, но сопоставление каждого возможного поля vcard и типа поля будет болезненным, подверженным ошибкам упражнением. есть ли лучший способ?

контакт андроида выглядит подозрительно, как vcard, поэтому я подозреваю, что они используют vcards для внутреннего использования. однако для этого нет общедоступного API.

Ответы [ 2 ]

10 голосов
/ 05 января 2011

контакт андроида выглядит подозрительно, как vcard, поэтому я подозреваю, что они используют vcards для внутреннего использования.

Я думаю, что это намного сложнее, чем внутреннее использование vCards, тем более что vCard - это просто текстовый файл, что делает его неэффективным для хранения и, тем более, для поиска большого количества из них.

Обзор ContactsContract (обратите внимание, я сократил его в том месте, где упоминается «трехуровневая модель данных») ...

Обзор

ContactsContract определяет расширяемую базу данных контактной информации. Контактная информация хранится в трехуровневой модели данных:

Насколько я могу судить, существует способ «извлечь» vCard, относящуюся к отдельному контакту, но я не знаю, как создать контакт из vCard.

РЕДАКТИРОВАТЬ: WRT импорт vCards при нажатии на ссылку в браузере - да, хорошая мысль. Я могу подтвердить, что он работает, по крайней мере, при получении vCard по Bluetooth (что, конечно, вполне логично). Если я «открываю» vCard на своем телефоне, я получаю «chooser», спрашивающий меня, хочу ли я использовать «File Editor» или «People» (приложение контактов HTC - не уверен, называется ли оно так же на других телефонах). Если есть только одна vCard, она импортируется без дальнейших запросов. Если их более одного, я получаю другой выборщик, спрашивающий, хочу ли я импортировать один / несколько / все (несколько дает другому варианту выбора с флажками для выбора).

Теоретически, я полагаю, может быть возможно иметь целую загрузку файлов .vcf, выгруженных в каталог где-нибудь, и написать некоторый код, который просто создает намерение, чтобы «открыть» один из них и использовать его с startActivity () без указав, какую деятельность использовать. Я не уверен, какое намеренное действие здесь будет использовано, но я бы начал с ACTION_VIEW - другие варианты могут быть ACTION_EDIT или (незначительно) ACTION_RUN.

Несмотря на то, что это может работать в известной среде, в частности, как единичное, оно немного грязное, и поведение / результаты могут отличаться в зависимости от телефона, версии Android и приложений контактов.

EDIT2: Чтобы использовать Intent для обработки файлов .vcf, я пробовал его только со своей SD-карты - я понятия не имею, как это сделать без предварительного сохранения. Следующее точно воспроизводит то, что я вижу, когда открываю vCard, отправленную через 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);
0 голосов
/ 06 января 2011

Я изо всех сил пытался импортировать контакты как vCard в Android, и, потратив много времени, я пришел к выводу, что нет открытых API для импорта контактов.

Единственный способ, который я знаю, - это повторно использовать источникКод Android.Я достиг того же самого, повторно использовав исходный код Android 2.1.

Файлы могут быть переданы из

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/pim/vcard/exception/VCardException.java/

В проводнике справа вы найдете все файлынеобходимо в папке PIM.Файл, который будет отвечать за запуск процедуры, - ImportVCardActivity.java

Надеюсь, это поможет !!

...