Beim Importieren von Kontakte…

(2010-11-18)

Beim Importieren von Kontakten aus einer VCF-Datei (generiert aus dem Android 2.1-Adressbuch) werden trotz en_DE Locale die Telefonnummern mit Bindestrichen formatiert. Um das zu fixen, kann man folgendermaßen in der SQLite-Datenbank herumstochern:

# cd /data/data/com.android.providers.contacts/databases
# cp contacts2.db /sdcard/contacts2.db
$ adb pull /sdcard/contacts2.db .
$ sqlite3 contacts2.db 'SELECT _id,data1 FROM data WHERE mimetype_id = 5' | \
perl -nlE 'my ($id, $num) = split(/\|/); $num =~ s/-//g; say "UPDATE data SET data1 = \"$num\" WHERE _id = $id;";' > updates.txt
$ sqlite3 contacts2.db < updates.txt
$ adb push updates.txt /sdcard/updates.txt
# cd /data/data/com.android.providers.contacts/databases
# export HOME=/root
# sqlite3 contacts2.db < /sdcard/updates.txt

Die etwas umständliche Methode UPDATE-Befehle erzeugen statt direkt die Datenbank zu modifizieren habe ich gewählt um sicherzustellen, dass es keine Race Conditions gibt.