Как вручную восстановить журнал вызовов из резервной копии adb на OnePlus One? (СМС уже восстановлены)

Я запустил adb backupвсе флаги резервного копирования на своем OnePlus One (который я постепенно обновил с 44S до 05Q). Затем я стер его, переустановил новый образ 05Q и попытался восстановить свои SMS и журналы вызовов.

Мне удалось восстановить историю SMS, скопировав /data/data/com.android.providers.telephony/databasesпапку обратно на мой новый телефон и установив соответствующие разрешения. Но хоть убей, я не могу понять, как восстановить мои журналы вызовов — я не могу понять, из какой папки восстанавливать, и не могу понять, куда его восстанавливать . Мне кажется, что они могут быть разными, потому что я изначально обновил телефон с немного более старой версии Cyanogenmod, тогда как свежая копия совершенно новая, но в любом случае я не могу понять, как это сделать. У меня есть неприятное ощущение, что журнал вызовов, возможно, даже не был скопирован, но это было бы странно, потому что журнал SMS был...

Есть идеи?

/data/data/com.android.providers.contacts/databases/contacts2.db(в таблице calls) Я подтвердил это на своем Oneplus One под управлением CM12. Но я не думаю, что ADB мог сделать резервную копию этого места . Пожалуйста, подтвердите, сделал ли ADB резервную копию, так как мне придется пересмотреть свой связанный ответ. // О, и кажется, что у вас есть root-доступ, так почему вы не использовали какой-нибудь хороший инструмент для резервного копирования, например, Titanium Backup или что-то в этом роде? Просто спрашиваю. :)
@Firelord: CM12 здесь не помогает (у меня уже есть свежий 05Q, который является CM11, мне достаточно легко проверить это самому). Проблема в том, что имена папок, кажется, изменились после первоначального обновления до 05Q; на самом деле, в моей резервной копии подпапка даже не называется databases/, а скорее db/. Вот почему я задаю вопрос здесь. В этом конкретном случае я вижу com.android.contacts-- который я пытался восстановить (но в котором нет подпапки базы данных) -- но не com.android.providers.contacts. Но com.android.providers.telephonyбыл бэкап, и вроде восстанавливал СМС.
@Firelord: Что касается того, почему я не использовал Titanium Backup: ну, это потому, что я был глуп и думал, что инструменты Google сделают все правильно. Мне никогда не приходило в голову, что то, что я хотел, было настолько неразумным, что даже тысячи флагов, которым я передал, adbбыло бы недостаточно.
Дело не в том, что имена папок изменились с databasesна, dbно ADB использует эти краткие формы в качестве соглашений практически при любом резервном копировании. Это вообще не связано с CM11 или CM12.
@Firelord: О... Понятно. Ну да, я не вижу эту папку. Почему бы ему резервировать SMS, но не журналы вызовов? Это не имеет смысла...
Почему контакты не накрылись, вот причина , а про СМС ничего сказать не могу, так как нету образа CM11 для проверки.
@Firelord: Верно, я видел эту ссылку, но это о базе данных контактов ... Я ищу базу данных журнала вызовов. Это одно и то же?

Ответы (1)

Примечание . OP уже знает ответ, но следующая информация предназначена для тех душ, которых может беспокоить та же проблема.


Разочарование!

CM11 в OnePlus One (будь то обновление 44S или 05Q) не предусматривает резервного копирования и восстановления журналов контактов и вызовов с помощью ADB.

Так что, к сожалению, ответ прост: ваши контакты и журналы вызовов не были заархивированы ADB, потому что разработчики CM11 не разрешили это, и поэтому вам следует искать другие способы их восстановления ( подсказка : контакты Google Синхронизация ).

Также, если это важно:

  • /data/data/com.android.providers.telephony/databasesздесь вы найдете базу данных для SMS/MMS
  • /data/data/com.android.providers.contacts/databases/где вы увидите контакты и журналы вызовов

Теперь вы можете прекратить чтение, если вас удовлетворил ответ, и я рекомендую заняться поиском некоторых методов восстановления, чтобы восстановить доступ к контактам и журналам вызовов.

Однако некоторым душам нужна причина для события, несмотря ни на что, так что у нас есть одна такая причина!


Почему были сохранены SMS/MMS, а не Контакты?

Почему был скопирован личный контент, такой как SMS/MMS, но не контакты?

Вы должны отметить, что с момента запуска Jelly Bean это не было обычным поведением, проявляемым в Android с открытым исходным кодом (AOSP), и ни в большинстве стандартных ПЗУ, чтобы разрешить резервное копирование указанного частного контента с помощью ADB, то есть как провайдера телефонии ( имеет базу данных SMS / MMS) и поставщик контактов (имеет журналы контактов и вызовов) обычно разрабатываются, чтобы не участвовать в резервном копировании и восстановлении инфраструктуры системы Android. Тем не менее, в CM11 есть некоторые изменения, которые позволяют создавать резервные копии SMS/MMS, но оставляют контакты и журналы вызовов в грязи.

Что это за изменения?

Мой вывод гласит, что в CM11 флаг named android:allowBackup="false"был в конечном итоге удален из поставщика телефонии , но остался нетронутым в поставщике контактов . Этот флаг всегда вводится под файлом AndroidManifest.xml.

Google здесь должен сказать следующее об этом флаге:

android:allowBackup

Разрешить ли приложению участвовать в инфраструктуре резервного копирования и восстановления. Если для этого атрибута установлено значение false, никакое резервное копирование или восстановление приложения никогда не будет выполняться, даже путем резервного копирования всей системы, которое в противном случае привело бы к сохранению всех данных приложения через adb . Значение по умолчанию этого атрибута — true.

(выделено мной)

Однако по какой-то причине CM12 отменил это решение, и теперь оба приложения вообще не разрешают резервное копирование из ADB.

Если вы хотите увидеть источник указанных пакетов, взгляните на AndroidManifest.xmlпровайдеров телефонии для:

  • CM11 -- нет такого флага под<application ..
  • CM12 -- имеет этот флаг под<application ..

Но для поставщика контактов и CM11 , и CM12 флаг не тронут.

Вы можете дополнительно проверить эту информацию из AndroidManifest.xmlобоих пакетов, которые у вас есть в вашем CM11. Вы обнаружите, что флаг присутствует в одном приложении, а не в другом.

Обратите внимание , что поведение по умолчанию, как указано в исходном коде Android , заключается в том, чтобы запретить резервное копирование в обоих приложениях для выпуска Kitkat.

Что касается того, почему разработчики CM11 внесли такие изменения, я бы посоветовал спросить их напрямую.

Готово!


Вы можете проверить мой аналогичный ответ, упомянутый здесь, на вопрос: Резервное копирование / восстановление SMS / MMS через ADB на устройстве без рута? .