Я пытаюсь добавить визитную карточку с веб-ссылки в список контактов пользователя на Android 2.2. Когда я направляю пользователя в файл .vcf, все, что я получаю, это текстовый вывод в мобильном браузере. Я подтвердил, что файлы передаются с текстом/v-картой MIME. Кажется, это должно быть довольно просто. Есть идеи?Как получить vCard (.vcf-файл) в Android-контакты с сайта
ответ
AFAIK Android не поддерживает файлы vCard из коробки, по крайней мере, до 2,2.
Вы можете использовать приложение vCardIO для чтения файлов vcf с вашей SD-карты и сохранения контактов. Итак, вы должны сначала сохранить их на SD-карте и импортировать их впоследствии.
vCardIO также доступен через рынок.
Что я также заметил, что у вас есть, чтобы сохранить файл как Unicode
, UTF-8
, не BOM
в формате Windows, с CRLF
(Carriage Return, Line Feed). Потому что, если вы этого не сделаете, импорт будет ломаться. (Говорить что-то о странных символов в файле)
Удачи :) Sid
Я бегу 2.2, и нет никаких изменений, отчеты от других на 2.3 говорят то же самое. Android (ошибка) не обрабатывает .vcf и ссылку на такой файл на веб-странице через порт 80, ни через HTTP-заголовки, ни в прямом потоке. Это просто НЕ ПОДДЕРЖИВАЕТСЯ ВСЕ.
После попытки заставить это работать, это мой опыт Android, включая и 4.0, а также .... – 2012-03-29 17:09:27
Теперь есть функция импорта на Android ICS 4.0.4. Сначала вы должны сохранить свой vcf на хранилище (USB-накопитель или SD-карту). Android сканирует выбранное хранилище для обнаружения любого файла vcf и будет импортировать их в выбранной адресной книге. Функциональность находится в меню параметров вашего списка контактов.
Это может использоваться, чтобы загрузить файл на SD карту Протестировано с Android версии 2.3.3 и 4.0.3
======= PHP ========== ===============
<?php
// this php file (example saved as name is vCardDL.php) is placed in my html subdirectory
//
header('Content-Type: application/octet-stream');
// the above line is needed or else the .vcf file will be downloaded as a .htm file
header('Content-disposition: attachment; filename="xxxxxxxxxx.vcf"');
//
//header('Content-type: application/vcf'); remove this so android doesn't complain that it does not have a valid application
readfile('../aaa/bbb/xxxxxxxxxx.vcf');
//The above is the parth to where the file is located - if in same directory as the php, then just the file name
?>
======= HTML ==================== ====
<FONT COLOR="#CC0033"><a href="vCardDL.php">Download vCARD</A></FONT>
Просто, чтобы вы знали: я просто попытался его с помощью визитной карточки 2.1 файла, созданного в соответствии с vCard 2.1 spec. Я обнаружил, что vCard 2.1, несмотря на старую версию, уже охватил все, что мне нужно, включая фотографию с кодировкой base64 и международные наборы символов.
Он отлично работал на моем немодифицированном устройстве Android 4.1.1 (Galaxy S3). Он также работал на старом iPhone 3GS (iOS 5, через Evernote app) и немодифицированном старом устройстве Android 2.1. Вам нужно только установить Content-disposition
в attachment
, как указано выше.
Незначительная проблема заключалась в том, что я запускал загрузку VCF с помощью QR code, который я сканировал с помощью Microsoft Tag app. Это приложение сообщило мне, что Android не может обрабатывать тип медиафайлов text/x-vcard
(или просто text/vcard
, неважно). Как только я открыл ссылку в веб-браузере (я пробовал Chrome и браузер по умолчанию Android), он работал нормально.
Лучшее решение, которое я нашел, - это принудительное скачивание, установив для него контент-расположение.vcf в файле Apache httpd.conf или .htaccess. Затем пользователь должен открыть файл, и им задается вопрос, как они хотят, чтобы контактная информация была вставлена в их список контактов. Этот поток помог много: http://code.google.com/p/android/issues/detail?id=9215 – ARolek 2010-12-08 06:56:34