Перенос контактов из телефона Philips Xenium X501 в HTC Desire SV?

Решил написать вопрос и сразу же ответ, потому как решение уже есть и может кому-то пригодится, кто-нибудь нагуглит.

Вся прелесть в том, что попытка перенести контакты из Philips через блютус не увенчалась успехом. Там нет возможности выделить все контакты и передать их по блютус в другое устройство. Есть только возможность по одному контакту кидать в формате vcard (что не очень удобно и долго). Когда подключился через блютус к Philips из HTC для импорта, то последний стал заявлять, что необходимо подключение по WiFi с первым.

В конце концов нашел под пунктом меню «Органайзер» опцию «Резервирование контактов» и получил Contacts_backup.udx. Перекинул в HTC, попробовал импортировать, но ничего не вышло. Тогда я открыл Contacts_backup.udx и увидел, что это обычный xml файл
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE DataExchangeInfo SYSTEM "udx.dtd">
...
<vCard>
<vCardInfo>
<Sequence>тут какой-то порядковый номер видимо</Sequence>

<vCardField>
<vCardLocation>тут видимо где находился контакт - в телефоне или в сим</vCardLocation>

<N>тут имя в непонятном человеческому глазу виде</N>

<TEL>тут номер телефона</TEL>
</vCardField>
...


, и на ум пришло просто взять его, распарсить и собрать из него на каждый контакт по одному файлу в формате vcard, для чего написал на том, что было под рукой (ПК), следующую штуку:
<?php
$content = file_get_contents('./Contacts_backup.udx');
preg_match_all('/<vCardInfo>.*<\/vCardInfo>/imsU', $content, $items);
$pattern = 'BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:{%NAME%}.
TEL;CELL:{%PHONE%}
END:VCARD
';
foreach($items[0] as $key => $item){
	preg_match('/<N>(.*)<\/N>/imsU', $item, $name);
	preg_match('/<TEL>(.*)<\/TEL>/imsU', $item, $phone);
	$output = $pattern;
	$output = str_replace('{%NAME%}', !empty($name[1]) ? $name[1] : '', $output);
	$output = str_replace('{%PHONE%}', !empty($phone[1]) ? $phone[1] : '', $output);
	$fd = fopen('./output/vcard'.$key.'.vcf','w+');
	fwrite($fd, $output);
	fclose($fd);
}


соответственно получил в каталоге output кучу файлов вида vcard<индекс>.vcf, залил их на HTC, поставил приложение Import Contacts, которое позволяет взять каталог с кучей vcard-файлов и ипортировать их в контакты.

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

Зато будет отлично если напишите простой способ переноса контактов с такого вида телефонов на такого вида смартфоны, опять же будет хорошо, если это окажется полезно людям.
  • Вопрос задан
  • 27739 просмотров
Пригласить эксперта
Ответы на вопрос 3
subvillion
@subvillion
HTC Desire SV это андроид, распарсите свой xml в csv и загрузите через аккаунт в google d.pr/i/8EJz
Ответ написан
@vm916
У мтс есть услуга «вторая память»! думаю что у других операторов есть что-то подобное.
Ответ написан
MDiMaI666
@MDiMaI666
Талантливый программист
программа под windows https://drive.google.com/uc?export=download&confir...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы