CM12+Titanium = Как восстановить данные Контакта?

Я только что установил CM12на N5110 и сделал Titaniumрезервную копию всех приложений. Теперь всякий раз, когда я пытаюсь вернуть свои контакты, приложение «Контакты» для Android останавливается с ошибкой « android.process.acore stopped...

Как получить контакты? потому что я не сделал резервную копию на основе Google для своих контактов.

Спасибо

У вас есть резервная копия хранилища контактов или приложения поставщика контактов? Это приложение хранит контакты в базе данных с именем contact2.db. Пока база данных не повреждена, очистка данных этого приложения, восстановление данных из Titanium и перезагрузка должны работать. Если нет, извлеките базу данных из резервной копии, принудительно остановите приложение, перейдите в каталог данных приложения и замените там базу данных. Перезагрузитесь и посмотрите, что произойдет.
я так и сделал...восстановил из титаниума..но дело в том что сейчас с СМ12 у меня Контакт 5.1, а старый был Контакт 4.1.2. Так что, возможно, это одна проблема, я думаю.

Ответы (1)

Вот как вы можете (попытаться) восстановить контакты вручную. (ПРИМЕЧАНИЕ: я предполагаю, что немного разбираюсь в Linux. Я попытался охватить то, что трудно найти, но не более того.)

Сначала включите режим отладки по USB и подключите телефон к компьютеру. Затем,

  1. Найдите папку, содержащую ваши резервные копии. По умолчанию я думаю, что это что-то вроде /sdcard/TitaniumBackup. Если вы использовали специальное расположение (например, для хранения резервных копий на внешней SD-карте), то его будет легко найти.
  2. Должен быть сжатый архив с именем, похожим на com.android.providers.contacts-<date>.tar.gz. Скопируйте его на свой компьютер с расширением adb pull.
  3. Разархивируйте файл, который вы только что вытащили. Теперь должна быть папка с именем data. Спускайтесь в data/data/com.android.providers.contacts/databases/. Там вы найдете contacts2.dbи profile.db. Используйте adb push, чтобы загрузить их на свой телефон. (Примечание: вам, вероятно, придется поместить их в папку, не требующую root-доступа.)

(Для следующих шагов вы можете перезагрузиться в режиме восстановления, чтобы убедиться, что ваш телефон не использует базу данных контактов. Вы можете легко сделать это, используя adb reboot recovery.)

  1. Снова запустите оболочку с помощью adb и выполните эскалацию до root с помощью su. cdк /data/data/com.android.providers.contacts/databases/. Переименовать contacts2.dbв contacts2.db.cmи profile.dbв profile.db.cm.
  2. Скопируйте файлы, которые вы отправили в /data/data/com.android.providers.contacts/databases/, чтобы они заменили те, которые вы только что переименовали.
  3. Убедитесь, что ваши новые файлы имеют те же разрешения, что и старые. Проверьте разрешения contacts2.db.cmи profile.db.cmс помощью ls -l, и измените разрешения ваших файлов с помощью chown. Проверьте метки SELinux с помощью ls -Zи при необходимости измените их с помощью chcon <full label> <file>.
  4. Перезагрузитесь и посмотрите, сработало ли это.

Я надеюсь, что этот метод работает для вас. Должен признаться, что когда я попробовал, CyanogenMod сразу же отменил мои изменения (такие, чтобы они contacts2.dbсоответствовали оригиналу contacts2.db.cm). Если этот способ не работает, а вы очень хотите использовать CyanogenMod, то вы все равно можете восстановить данные contacts2.dbи попробовать вручную добавить все свои контакты.

  1. Установить sqlite3.
  2. Беги sqlite3 contacts2.db.
  3. Ваши телефонные номера находятся в таблице named phone_lookup, а отображаемые имена можно получить из таблицы named raw_contacts. Вы можете увидеть (по крайней мере, некоторые из) своих контактов, запустив

select raw_contacts.display_name, phone_lookup.normalized_number from raw_contacts inner join phone_lookup on raw_contacts._id = phone_lookup.raw_contact_id;