20 votos

Android Leer mensajes SMS recientes desde la línea de comandos

Recientemente he roto la pantalla de mi Android. (Otra vez)

Es un T-Mobile G2

Tratar de mantenerme al día con mi ocupada vida relacionada con la tecnología ya es bastante difícil sin perder mi vínculo con todos.

He rooteado el teléfono y tengo el depurador USB ya encendido.

¿Alguien sabe cómo revisaría mi reciente mensaje SMS desde el shell de adb para poder seguir trabajando mientras ahorro para conseguir un nuevo teléfono o una pantalla de repuesto?

Gracias a todos los que tengan información al respecto.

EDITAR

Respuesta a la eldarerathis

C:\android-sdk\platform-tools>adb shell
$ cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
$ sqlite3 mmssms.db
sqlite3 mmssms.db
sqlite3: permission denied
$

no puede chmod el archivo. ¿Sabes realmente dónde está?

$ chmod +x sqlite3
chmod +x sqlite3
Bad mode
$

Su me deja con sólo las órdenes básicas

$ su
su
# cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
sqlite3: not found
#

Corregido

sqlite no se instaló

C:\android-sdk\platform-tools>adb shell
$ cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
$ sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.6.22
Enter ".help" for instructions
sqlite>

También para acceder a la base de datos necesitaba ser Root.

C:\android-sdk\platform-tools>adb shell
$ su
# cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.6.22
Enter ".help" for instructions
sqlite>

Muchas gracias, Eldarerathis.

Este enlace ayudó

10voto

David Negron Puntos 971

Esto es realmente feo, pero puedes leerlos desde la línea de comandos usando sqlite3 para ver las entradas de la base de datos. Probablemente tendrás que buscar un binario para esto a menos que tengas una ROM personalizada instalada. Hay algunas instrucciones para instalar dicho binario en esta cuestión del desbordamiento de la pila y SuperOneClick viene empaquetado con él (se puede encontrar una copia del binario mismo aquí ).

Si necesita instalar el binario, use mount (sin parámetros) para determinar dónde está su /system La partición está físicamente localizada (la mía es /dev/block/mtdblock3 por ejemplo). Entonces siga las instrucciones del primer enlace de arriba, y empiece por volver a montarlo en modo de lectura/escritura con el comando:

mount -o rw,remount /your/system/partition /system

Una vez que tengas sqlite3 querrás abrir un adb shell cambiar a root con su y luego hacer lo siguiente:

# cd /data/data
cd /data/data
# cd com.android.providers.telephony/databases ***
cd com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.7.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> SELECT * FROM sms WHERE read=0;

Esto sacará todas las filas de la mesa para todos los mensajes no leídos. Las columnas de la tabla están definidas de esta manera (para que puedas recortar el SELECT ):

CREATE TABLE sms (_id INTEGER PRIMARY KEY,thread_id INTEGER,address TEXT,
  person INTEGER,date INTEGER,protocol INTEGER,read INTEGER DEFAULT 0,
  status INTEGER DEFAULT -1,type INTEGER,reply_path_present INTEGER,
  subject TEXT,body TEXT,service_center TEXT,locked INTEGER DEFAULT 0,
  error_code INTEGER DEFAULT 0,seen INTEGER DEFAULT 0);

***Nota para la línea marcada: esto puede ser ligeramente diferente dependiendo de su dispositivo y versión de Android, por eso he incluido esto. cd comando por separado. I Piensa en solía ser com.android.providers/telephony/databases en dispositivos más antiguos pero no lo recuerdo del todo. Usa ls para buscar el camino adecuado aquí.


Alternativamente, podrías intentar copiar el archivo .db en tu tarjeta SD (o tirar de él con adb pull ) y luego leerlo en su computadora con sqlite.

3voto

user23548 Puntos 139

Gracias a la hermosa pista de arriba de Eldarerathis, sólo hago

DB=/data/data/com.android.providers.telephony/databases/mmssms.db
echo 'select address,body from sms;' | ./sqlite3 -csv $DB 

para leer mis SMS desde mi Root prompt.

Como no tenía sqlite3, primero tuve que descargar con

curl http://dl.dropbox.com/u/16958605/sqlite3
chmod a+x sqlite3

O ver Instalador de SQLite3 en Google Play (si no confías en la fuente del buzón).

1voto

Izzy Puntos 45544

En caso de que esté interesado en más detalles que sólo el remitente y el mensaje (como en esta respuesta ), acabo de encontrar un buen artículo sobre el tema: Leer SMS directamente desde la base de datos de Sqlite en Android . También ver: La estructura de datos del mensaje .

Mejor aún, echa un vistazo a Github: Android-SMS es una herramienta escrita en Python que recupera todos los mensajes SMS y los organiza en Conversaciones SMS con las estadísticas proporcionadas. Es también recupera todos los mensajes MMS y los organiza en Conversaciones MMS, con los respectivos archivos. No lo he probado (todavía) yo mismo (lo acabo de encontrar hace unos minutos), pero suena bastante bien.

Por supuesto, este programa no funciona directamente en el dispositivo Android, sino en tu ordenador (donde requiere Python 2.7 con SQLite3 para Python). Así que primero tendrás que sacar la base de datos del dispositivo. Todos los pasos necesarios se describen en la página principal del proyecto Github.

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