Есть ли способ резервного копирования/восстановления SMS и MMS-сообщений с помощью ADB, когда устройство не рутировано?
adb pull
здесь не сработает, поскольку соответствующая база данных ( /data/data/com.android.providers.telephony/databases/mmssms.db
) не может быть прочитана ADB, если она не работает в небезопасном (корневом) режиме.adb shell "cat /data/data/com.android.providers.telephony/databases/mmssms.db > /sdcard/mmssms.db
без рут прав тоже не работаетadb backup
по какой-то причине не распространяется на эту базу на том устройстве, с которым я проверял (пустая резервная копия — только 41 байт заголовка резервной копии в результирующем файле)Я особенно удивляюсь, почему adb backup
не покрывает это. Если это из соображений конфиденциальности, то то же самое должно относиться и к базе данных контактов, которая явно имеет резервную копию.
Использованная литература:
Итак: любое решение на нерутированном устройстве? Обратите внимание, что я НЕ прошу решения на основе приложений. Я прекрасно знаю, что для этого есть несколько приложений . Я специально хочу, чтобы «решение на основе оболочки» использовалось через ADB.
Мне особенно интересно, почему резервная копия adb не распространяется на это.
Дело не в том, что adb backup
он не хочет покрывать приложение com.android.providers.telephony
. Это приложение мало чем отличается от любого другого системного приложения, основанного на его AndroidManifest.xml
. Проблема заключается в флаге, объявленном его разработчиком в манифесте, который по какой-то причине adb backup
должен соблюдаться как механизм по умолчанию.
Этот флаг есть не что иное, как android:allowBackup="false"
. Он отключает приложение как от резервного копирования, так и от восстановления ADB. Google здесь должен сказать:
android:allowBackup
Разрешить ли приложению участвовать в инфраструктуре резервного копирования и восстановления. Если для этого атрибута установлено значение false, никакое резервное копирование или восстановление приложения никогда не будет выполняться, даже путем резервного копирования всей системы, которое в противном случае привело бы к сохранению всех данных приложения через adb. Значение по умолчанию этого атрибута — true.
(выделено мной)
Проверьте AndroidManifest.xml
это приложение для версии Lollipop здесь или посмотрите это свидетельство для моего Android 4.2.1:
В этом приложении есть еще кое-что. Вы даже не можете очистить данные из «Настройки» → «Приложения» → «Все приложения» →<THIS_APP>
, так как android:allowClearUserData="false"
это тоже объявлено, а не то, с чем мы сталкиваемся время от времени.
Если это из соображений конфиденциальности, то то же самое должно относиться и к базе данных контактов, которая явно имеет резервную копию.
Странно не то, что вы можете это сделать, а то, как ваша система позволяет вам делать это только с помощью adb backup
!
Хранение контактов обрабатывается приложением «ContactsProvider», которое называется pkg_name= com.android.providers.contacts
. Этот флаг android:allowBackup="false"
четко упоминается AndroidManifest.xml
для Jelly Bean (нажмите здесь, чтобы увидеть другие версии).
Вы используете ICS или какой-либо предшественник JB?
Я обнаружил, что в этом приложении нет объявления этого флага для ICS здесь . На самом деле вы можете разгадать эту загадку, поскольку я не могу сделать резервную копию этого приложения в своем JB 4.2.1 в соответствии с определением флага и всегда получаю этот 41-байтовый файл резервной копии.
Что касается любого другого метода резервного копирования/восстановления SMS/MMS с помощью ADB без root-доступа – все руки вверх.
Повелитель огня
Иззи
adb backup
: несколько исключений, большинство из них можно игнорировать, но пользователь очень любит хранить SMS, которые также не были защищены.Грубер
Иззи