Existe alguma maneira de fazer backup / restaurar mensagens SMS e MMS usando o ADB, quando o dispositivo não está enraizado?
adb pull
não funcionará aqui, pois o banco de dados correspondente (/data/data/com.android.providers.telephony/databases/mmssms.db
) não pode ser lido pelo ADB se não estiver sendo executado no modo inseguro (raiz)adb shell "cat /data/data/com.android.providers.telephony/databases/mmssms.db > /sdcard/mmssms.db
também não funciona sem acesso rootadb backup
por algum motivo, não cobre esse banco de dados no dispositivo com o qual verifiquei (backup vazio - apenas os 41 bytes do cabeçalho do backup no arquivo resultante)
Eu me pergunto especialmente por adb backup
que não cobre isso. Se for por "razões de privacidade", o mesmo deverá se aplicar ao banco de dados de contatos - que é claramente feito o backup.
Referências:
- O adb pode ser usado para recuperar mensagens SMS enquanto estiver no "Modo de segurança" permanente? aborda o mesmo tópico - mas fora isso, não estou restrito ao modo de segurança
- O conteúdo completo do backup sms / mms via adb (no site irmão do desenvolvedor) é uma "solução enraizada" (e, além disso, um pouco de idade: as perguntas e as respostas têm mais de 3 anos)
Então: Alguma solução em um dispositivo não raiz? Observe que NÃO estou pedindo uma solução baseada em aplicativo. Estou ciente de que existem vários aplicativos disponíveis para isso . Eu quero especificamente uma "solução baseada em shell", para ser usada via ADB.
adb backup
: poucas exceções, a maioria delas ignoráveis, mas o usuário gosta muito de manter o SMS que também não era coberto.Respostas:
Não é que
adb backup
não queira cobrir o aplicativocom.android.providers.telephony
. Este aplicativo não é muito diferente de qualquer outro aplicativo do sistema com base no seuAndroidManifest.xml
. O problema está na sinalização declarada pelo desenvolvedor no manifesto que, por algum motivo, como mecanismo padrão,adb backup
é obrigada a respeitar.Este sinalizador não é outro senão
android:allowBackup="false"
. Desativa o aplicativo do backup e restauração do ADB. O Google aqui tem a dizer:(Ênfase minha)
Faça o checkout
AndroidManifest.xml
deste aplicativo para a versão Lollipop aqui ou veja esta evidência para o meu Android 4.2.1:Há mais para este aplicativo. Você não pode nem mesmo apagar dados em Configurações → Aplicativos → Todos os aplicativos →
<THIS_APP>
uma vez que tambémandroid:allowClearUserData="false"
é declarado, não algo que encontramos de vez em quando.É bizarro, não que você seja capaz de fazê-lo, mas como está o seu sistema, permitindo que você faça isso apenas com
adb backup
!O armazenamento de contatos é tratado pelo aplicativo "ContactsProvider", que atende pelo pkg_name =
com.android.providers.contacts
. A bandeiraandroid:allowBackup="false"
é claramente mencionada noAndroidManifest.xml
Jelly Bean (clique aqui para ver as outras versões).Você está usando o ICS ou qualquer antecessor do JB?
Eu descobri que este aplicativo não tem nenhuma declaração dessa bandeira para o ICS aqui . Você pode realmente esclarecer esse mistério, já que não posso fazer backup deste aplicativo no meu JB 4.2.1, conforme a definição do sinalizador, e sempre obtém esse arquivo de backup de 41 bytes.
Como qualquer outro método para fazer backup / restauração de SMS / MMS usando o ADB sem acesso root - tudo por aqui.
fonte