Android Lire les messages SMS récents à partir de la ligne de commande

18

J'ai récemment cassé l'écran de mon Android. (Encore)

C'est un T-Mobile G2

Essayer de suivre ma vie active liée à la technologie est déjà assez difficile sans perdre mon lien avec tout le monde.

J'ai rooté le téléphone et le débogage USB est déjà activé.

Est-ce que quelqu'un sait comment je vérifierais mon récent SMS depuis le shell adb afin que je puisse continuer à travailler pendant que j'économise pour obtenir un nouveau téléphone ou un écran de remplacement.

Merci pour tous ceux qui ont des informations à ce sujet.

ÉDITER

Réponse aux 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
$

cant chmod le fichier. savez-vous réellement où il se trouve?

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

su me laisse avec seulement des commandes de 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
#

Corrigée

sqlite n'a pas été installé

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>

Aussi pour accéder à la base de données, je devais être 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>

Merci beaucoup eldarerathis

Ce lien a aidé

The Lazy Coder
la source
Il semble que vous n'ayez pas le sqlite3binaire sur votre appareil. Le premier lien de ma réponse contient des instructions pour vous aider à l'installer /system/bin. Voici un lien vers le binaire lui-même.
eldarerathis

Réponses:

10

C'est vraiment moche, mais vous pouvez les lire à partir de la ligne de commande en utilisant sqlite3pour afficher les entrées de la base de données. Vous aurez probablement besoin de déterrer un binaire pour cela, sauf si vous avez installé une ROM personnalisée. Il y a quelques instructions pour installer ledit binaire dans cette question de débordement de pile , et SuperOneClick est livré avec (une copie du binaire lui-même peut être trouvée ici ).

Si vous avez besoin d'installer le binaire, utilisez mount(sans paramètres) pour déterminer où se /systemtrouve physiquement votre partition (la mienne /dev/block/mtdblock3, par exemple). Suivez ensuite les instructions du premier lien ci-dessus et commencez par le remonter en mode lecture / écriture avec la commande:

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

Une fois que vous avez, sqlite3vous voudrez ouvrir un adb shell, basculez vers root avec su, puis procédez comme suit:

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

Cela va extraire toutes les lignes du tableau pour tous les messages non lus. Les colonnes du tableau sont ainsi définies (vous pouvez donc les couper 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);

*** Remarque pour la ligne marquée: cela peut être légèrement différent selon votre appareil et la version d'Android, c'est pourquoi j'ai inclus cette cdcommande séparément. Je pense que c'était com.android.providers/telephony/databasessur des appareils plus anciens mais je ne m'en souviens pas très bien. Utilisez lspour chercher le chemin correct ici.


Alternativement, vous pouvez essayer de copier le fichier .db sur votre carte SD (ou de le tirer avec adb pull) puis de le lire sur votre ordinateur avec sqlite.

eldarerathis
la source
J'ai essayé cela et il semble que sqlite3 ait une autorisation refusée
il dit mauvais mode
@Jason: Vous devez être root pour lire ce répertoire (il suffit de l'exécuter suau préalable).
eldarerathis
@Jason: Hm, utilise chmod 0755 sqlite3, alors. Peut-être que le chmodbinaire stock n'aime pas le +xparamètre.
eldarerathis
dès que j'exécute su. il agit comme s'il n'y avait pas de commandes
3

Merci à la belle allusion ci-dessus d'eldarerathis, je fais juste

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

pour lire mes SMS à partir de mon invite racine.

Comme je n'avais pas sqlite3, je devais d'abord le télécharger avec

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

Ou consultez le programme d' installation de SQLite3 sur Google Play (si vous ne faites pas confiance à la source de la boîte de dépôt).

user23548
la source
1
Une URL dl.dropbox.com pour ce binaire ne se sent pas en sécurité. Pouvez-vous fournir une source officielle?
pzkpfw
1

Dans le cas où vous êtes intéressé par plus de détails que l'expéditeur et le message (comme dans cette réponse ), je viens de trouver un bel article sur le sujet: lire les SMS directement à partir de la base de données Sqlite dans Android . Voir aussi: La structure des données du message .

Encore mieux, jetez un œil à Github: ANDROID-SMS est un outil écrit en Python qui récupère tous les messages SMS et les organise en conversations SMS avec les statistiques fournies. Il récupère également tous les messages MMS et les organise en conversations MMS, avec les fichiers respectifs. Je ne l'ai pas essayé (encore) moi-même (je l'ai trouvé il y a quelques minutes), mais ça a l'air plutôt bien.

Bien sûr, ce programme ne fonctionne pas directement sur l'appareil Android - mais plutôt sur votre ordinateur (où il nécessite Python 2.7 avec SQLite3 pour Python). Vous devrez donc d'abord extraire la base de données de l'appareil. Toutes les étapes requises sont décrites sur la page principale de Github du projet.

Izzy
la source
0

Une autre solution que j'ai inventée utilise une application sur le téléphone qui réagit aux SMS et l'enregistre dans un fichier que vous pouvez lire avec ADB.

  • Installez n'importe quelle application de type Tasker, je l'ai fait avec E-Robot
  • Créer une nouvelle commande
  • Ajouter un évènement Contact=>SMS
  • Ajoutez une action Memory=>Write file, vous pouvez y enregistrer des SMS dans un nouveau fichier à chaque fois ou dans le même avec un séparateur. Quoi qu'il en soit, enregistrez-le dans / sdcard ou dans tout chemin accessible via ADB.
  • Surveillez ce chemin avec ADB et lisez le contenu SMS.
Fr0sT
la source