Problemas de vinculación de cuentas y pérdida de contactos en Android

En un experimento, necesitaba dos teléfonos Android. Por lo tanto, presté el teléfono de un amigo. Para descargar aplicaciones desde Google Play, se requiere una cuenta de Gmail, y el teléfono de mi amigo no tenía ninguna configruada. Vinculé mi cuenta de Gmail, pero la descarga no fue exitosa, ya que Google Play recnooció el dispositvio como mi M9 (parece que cada cuenta solo puede estar vinculada a un dispositivo). El problema mayor surgió al intentar eliminar mi cuenta del teléfono de mi amigo, ya que no era posible sin restablecer los valores de fábrica, lo que implica la pérdida de todos los datos.

En lugar de restablecer a los valores de fábrica, busqué una solución alternativa: eliminar el archivo data/system/accounts.db. Usando adb shell, renombré el archivo a accounts.db.bak y reinicié el teléfono. La cuenta desapareció, pero también se perdieron los contactos de mi amigo, que eran varios cientos.

Para intentar recuperar los contactos, volví a cambiar el nombre del archivo a accounts.db y reinicié el teléfono. La cuenta regresó, pero los contactos no. Un usuario del foro sugirió ajustar los permisos del archivo:

$ adb shell
# cd /data/system/
# chown system.system accounts.db
# chmod 664 accounts.db
# exit

Sin embargo, esto no resolvió el problema. Luego, revisé el archivo de base de datos de los contactos: /data/data/com.android.providers.contacts/databases/contacts2.db, pero este tampoco existía. Aquí están los pasos para manejar la base de datos con SQLite:

$ adb pull /data/data/com.android.providers.contacts/databases/contacts2.db contacts2.db
$ sqlite3 contacts2.db
sqlite> .tables
sqlite> s-e-l-e-c-t * from contacts;
sqlite> .quit

Los datos de los contactos estaban en la tabla contacts.

Después de todo esto, encontré un método efectivo para eliminar una cuenta de Gmail sin restablecer a los valores de fábrica (¡recuerda hacer una copia de seguridad primero!):

adb pull /data/system/accounts.db accounts.db
sqlite3 d:/accounts.db
s-e-l-e-c-t * from accounts;
.schema
delete from accounts where _id=1;  (cambia el ID según corresponda)
adb push d:/accounts.db /data/system/accounts.db

Conclusión:

  • Realiza copias de seguridad regulares usando herramientas como ADB o aplicaciones de terceros.
  • Usa una cuenta de Gmail personal para sincronización.
  • No uses tu cuenta en dispositivos de otros, y no permitas que usen la tuya.
  • Siempre haz una copia de seguridad antes de probar métodos de internet.

Etiquetas: Android ADB SQLite cuentas de Gmail gestión de contactos

Publicado el 9-19 21:57