23 votos

¿Hacer una copia de seguridad/restaurar SMS/MMS a través de ADB en un dispositivo no rooteado?

¿Hay alguna manera de hacer una copia de seguridad/restaurar los mensajes SMS y MMS usando ADB, cuando el dispositivo no está rooteado?

  • adb pull no funcionará aquí, ya que la base de datos correspondiente ( /data/data/com.android.providers.telephony/databases/mmssms.db ) no puede ser leído por ADB si no se está ejecutando en modo inseguro (Root)
  • adb shell "cat /data/data/com.android.providers.telephony/databases/mmssms.db > /sdcard/mmssms.db tampoco funciona sin acceso a root
  • adb backup por alguna razón no cubre esta base de datos en el dispositivo con el que lo he comprobado (copia de seguridad vacía - sólo los 41 bytes de la cabecera de la copia de seguridad en el archivo resultante)

Me pregunto especialmente por qué adb backup no cubre esto. Si es por "razones de privacidad", entonces lo mismo debería aplicarse a la base de datos de contactos, de la que claramente se hace una copia de seguridad.

Referencias:

Así que: ¿Alguna solución en un dispositivo no rooteado? Tenga en cuenta que estoy NO pidiendo una solución basada en una aplicación. Soy plenamente consciente de que hay varias aplicaciones disponibles para ello . Quiero específicamente una "solución basada en el shell", para ser utilizada a través de ADB.

11voto

Firelord Puntos 161

Me pregunto especialmente por qué la copia de seguridad adb no cubre esto.

No es que adb backup no quiere cubrir la aplicación com.android.providers.telephony . Esta aplicación no es muy diferente de cualquier otra aplicación de sistema basada en su AndroidManifest.xml . El problema es con la bandera que su desarrollador ha declarado en el manifiesto que como mecanismo por defecto por alguna razón adb backup está obligado a respetar.

Esta bandera no es otra que android:allowBackup="false" . Se excluye la aplicación tanto de la copia de seguridad ADB como de la restauración. Google aquí tiene que decir:

android:allowBackup

Si se permite que la aplicación participe en la infraestructura de copia de seguridad y restauración. Si este atributo se establece como falso, nunca se realizará una copia de seguridad o restauración de la aplicación, incluso mediante una copia de seguridad de todo el sistema que, de otro modo, haría que todos los datos de la aplicación se guardaran a través de adb. El valor por defecto de este atributo es true.

<em>(El énfasis es mío)</em>

Compruebe el AndroidManifest.xml de esta aplicación para la versión Lollipop aquí o ver esta prueba para mi Android 4.2.1:

IMG: no backup flag

Hay más cosas en esta aplicación. Ni siquiera puedes Borrar datos de Ajustes → Aplicaciones → Todas las aplicaciones → <THIS_APP> desde android:allowClearUserData="false" también se declara, no es algo que encontremos de vez en cuando.

Si es por "razones de privacidad", entonces lo mismo debería aplicarse a la base de datos de contactos, de la que claramente se hace una copia de seguridad.

Es extraño, no es que seas capaz de hacerlo, pero ¿cómo es que tu sistema te permite hacer eso sólo con adb backup ¡!

El almacenamiento de los contactos está a cargo de la aplicación "ContactsProvider", cuyo nombre es pkg_name= com.android.providers.contacts . La bandera android:allowBackup="false" se menciona claramente en su AndroidManifest.xml para Jelly Bean (haga clic en aquí para ver las otras versiones).

¿Estás usando ICS o algún predecesor de JB?

He encontrado que esta aplicación no tiene ninguna declaración de esa bandera para ICS aquí . En realidad se puede despejar este misterio, ya que no puedo tomar copia de seguridad de esta aplicación en mi JB 4.2.1 según la definición de la bandera, y siempre obtiene ese archivo de copia de seguridad de 41 bytes.


En cuanto a cualquier otro método para tomar SMS / MMS de copia de seguridad / restauración utilizando ADB sin acceso Root - todas las manos aquí.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X