Czy istnieje sposób na tworzenie kopii zapasowych / przywracanie wiadomości SMS i MMS przy użyciu ADB, gdy urządzenie nie jest zrootowane?
adb pull
tutaj nie będzie działać, ponieważ odpowiednia baza danych (/data/data/com.android.providers.telephony/databases/mmssms.db
) nie może być odczytana przez ADB, jeśli nie działa w trybie niepewnym (root)adb shell "cat /data/data/com.android.providers.telephony/databases/mmssms.db > /sdcard/mmssms.db
nie działa też bez dostępu rootaadb backup
z jakiegoś powodu nie obejmuje tej bazy danych na urządzeniu, z którym sprawdziłem (pusta kopia zapasowa - tylko 41 bajtów nagłówka kopii zapasowej w pliku wynikowym)
Szczególnie zastanawiam się, dlaczego adb backup
tego nie obejmuje. Jeśli dzieje się tak z „powodów związanych z prywatnością”, to samo powinno mieć zastosowanie do bazy danych kontaktów - która jest wyraźnie utworzona.
Bibliografia:
- Czy adb można używać do odzyskiwania wiadomości SMS w trybie „awaryjnym”? obejmuje ten sam temat - ale poza tym nie jestem ograniczony dotryb bezpieczeństwa
- tworzenie kopii zapasowych pełnej zawartości sms / mms przez adb (na naszej siostrzanej stronie dla programistów) służy do „zrootowanego rozwiązania” (a poza tym jest trochę starsze: pytania i odpowiedzi mają więcej niż 3 lata)
Więc: jakieś rozwiązanie na urządzeniu niezrootowanym? Pamiętaj, że NIE proszę o rozwiązanie oparte na aplikacji. Jestem w pełni świadomy, że dostępnych jest kilka aplikacji do tego . W szczególności chcę „rozwiązania opartego na powłoce”, które będzie używane przez ADB.
adb backup
: kilka wyjątków, większość z nich jest ignorowalna, ale użytkownik bardzo lubi przechowywać SMS-y, których również nie uwzględniono.Odpowiedzi:
Nie jest tak, że
adb backup
nie chce obejmować aplikacjicom.android.providers.telephony
. Ta aplikacja niewiele różni się od innych aplikacji systemowych opartych na tej aplikacjiAndroidManifest.xml
. Problem polega na tym, że flaga, którą programista zadeklarował w manifeście, jest z jakiegoś powodu domyślnym mechanizmemadb backup
.Ta flaga jest niczym innym jak
android:allowBackup="false"
. To wyłącza aplikację zarówno z kopii zapasowej ADB, jak i przywracania. Google tutaj musi powiedzieć:(Moje podkreślenie)
Sprawdź
AndroidManifest.xml
tę aplikację dla wersji Lollipop tutaj lub zobacz te dowody dla mojego Androida 4.2.1:Ta aplikacja oferuje coś więcej. Nie można nawet wyczyścić danych z ustawień → Aplikacje → Wszystkie aplikacje →,
<THIS_APP>
ponieważ równieżandroid:allowClearUserData="false"
zostało zadeklarowane, a nie coś, co napotykamy co jakiś czas.To dziwne, nie dlatego, że jesteś w stanie to zrobić, ale w jaki sposób twój system pozwala ci to zrobić tylko za pomocą
adb backup
!Pamięć kontaktów jest obsługiwana przez aplikację „ContactsProvider”, która obsługuje pkg_name =
com.android.providers.contacts
. Flagaandroid:allowBackup="false"
jest wyraźnie wymieniona w jejAndroidManifest.xml
dla Jelly Bean (kliknij tutaj, aby zobaczyć inne wersje).Czy używasz ICS lub jakiegokolwiek poprzednika JB?
Okazało się, że ta aplikacja nie posiada żadnych deklaracji tej flagi dla ICS tutaj . Możesz rzeczywiście usunąć tę tajemnicę, ponieważ nie mogę wykonać kopii zapasowej tej aplikacji w moim JB 4.2.1 zgodnie z definicją flagi i zawsze dostaje ten 41-bajtowy plik kopii zapasowej.
Podobnie jak w przypadku każdej innej metody wykonywania kopii zapasowej / przywracania SMS / MMS przy użyciu ADB bez dostępu do katalogu głównego - wszystkie ręce tutaj.
źródło