Android Leggi i messaggi SMS recenti dalla riga di comando


18

Di recente ho rotto lo schermo del mio Android. (Ancora)

È un T-Mobile G2

Cercare di tenere il passo con la mia vita frenetica legata alla tecnologia è abbastanza difficile senza perdere il collegamento con tutti.

Ho effettuato il root del telefono e il debug USB è già attivo.

Qualcuno sa come vorrei controllare i miei recenti messaggi SMS dalla shell adb in modo da poter tenere il passo con il lavoro mentre risparmio fino a ottenere un nuovo telefono o una schermata di sostituzione.

Grazie per chiunque abbia qualsiasi informazione in merito.

MODIFICARE

Risposta a 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
$

non posso modificare il file. sai davvero dove si trova?

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

su mi lascia solo con i comandi di base

$ 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
#

corretto

sqlite non è stato installato

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>

Anche per accedere al database avevo bisogno di essere 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>

Grazie mille eldarerathis

Questo link ha aiutato


Sembra che tu non abbia il sqlite3binario sul tuo dispositivo. Il primo link nella mia risposta contiene istruzioni per aiutarti a installarlo /system/bin. Ecco un link al binario stesso.
eldarerathis,

Risposte:


10

Questo è davvero brutto, ma puoi leggerli dalla riga di comando usando sqlite3per visualizzare le voci del database. Probabilmente dovrai scavare un binario per questo a meno che tu non abbia installato una ROM personalizzata. Ci sono alcune istruzioni per l'installazione di detto binario in questa domanda Stack Overflow , e SuperOneClick viene fornito con esso (una copia del binario stesso può essere trovata qui ).

Se devi installare il binario, usa mount(senza parametri) per determinare dove /systemsi trova fisicamente la tua partizione (la mia è /dev/block/mtdblock3, per esempio). Quindi seguire le istruzioni nel primo link sopra e iniziare rimontandolo in modalità lettura / scrittura con il comando:

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

Una volta che sqlite3hai vorrai aprire un adb shell, passare a root con su, quindi effettuare le seguenti operazioni:

# 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;

Ciò estrarrà tutte le righe dalla tabella per tutti i messaggi non letti. Le colonne nella tabella sono definite in questo modo (quindi puoi tagliare 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 per la linea contrassegnata: questo potrebbe essere leggermente diverso a seconda del dispositivo e della versione di Android, motivo per cui ho incluso questo cdcomando separatamente. Io penso che è usato per essere com.android.providers/telephony/databasessu dispositivi meno recenti, ma non mi ricordo bene. Utilizzare lsa guardarsi intorno per il corretto pathing qui.


In alternativa, puoi provare a copiare il file .db sulla tua scheda SD (o tirarlo con adb pull) e quindi leggerlo sul tuo computer con sqlite.


Ho provato questo e sembra che sqlite3 abbia il permesso negato

dice cattiva modalità

@Jason: devi essere root per leggere quella directory (basta eseguirla suprima).
eldarerathis,

@Jason: Hm, usa chmod 0755 sqlite3, allora. Forse al chmodbinario di borsa non piace il +xparametro.
eldarerathis,

non appena eseguo su. si comporta come se non ci fossero comandi

3

Grazie al bellissimo suggerimento sopra di eldarerathis, lo faccio e basta

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

per leggere i miei SMS dal mio prompt di root.

Dato che non avevo sqlite3, ho dovuto prima scaricarlo con

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

Oppure vedi il programma di installazione di SQLite3 su Google Play (se non ti fidi dell'origine dropbox).


1
Un URL dl.dropbox.com per quel file binario non è sicuro. Potete fornire una fonte ufficiale?
pzkpfw,

1

Nel caso in cui tu sia interessato a maggiori dettagli oltre al mittente e al messaggio (come in questa risposta ), ho appena trovato un bell'articolo sull'argomento: leggi gli SMS direttamente dal database Sqlite su Android . Vedi anche: La struttura dei dati dei messaggi .

Ancora meglio, dai un'occhiata a Github: ANDROID-SMS è uno strumento scritto in Python che recupera tutti i messaggi SMS e li organizza in conversazioni SMS con statistiche fornite. Si recupera anche tutti i messaggi MMS e li organizza in conversazioni MMS, con i rispettivi file. Non l'ho provato (ancora) da solo (l'ho trovato pochi minuti fa), ma sembra abbastanza pulito.

Naturalmente, questo programma non funziona direttamente sul dispositivo Android, ma sul tuo computer (dove richiede Python 2.7 con SQLite3 per Python). Quindi dovrai prima estrarre il database dal dispositivo. Tutti i passaggi richiesti sono descritti nella pagina principale di Github del progetto.


0

Un'altra soluzione che ho inventato utilizza un'app sul telefono che reagisce su SMS e la salva in un file che puoi leggere con ADB.

  • Installa qualsiasi app simile a Tasker, l'ho fatta con E-Robot
  • Crea un nuovo comando
  • Aggiungi evento Contact=>SMS
  • Aggiungi azione Memory=>Write file, lì puoi salvare SMS in un nuovo file ogni volta o nello stesso con separatore. Salvalo comunque su / sdcard o su qualsiasi percorso accessibile tramite ADB.
  • Monitora quel percorso con ADB e leggi i contenuti SMS.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.